diff options
| author | Linus Torvalds <torvalds@athlon.transmeta.com> | 2002-02-04 17:57:11 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@athlon.transmeta.com> | 2002-02-04 17:57:11 -0800 |
| commit | c8ebfc888f9ee93f2dc7cd62b3be66263755d99a (patch) | |
| tree | f449a3433c022ed8fd9aaa8f291a1b4e354fd5b9 /drivers | |
| parent | 5d12a58c4049a4839abbbdf87dd189505513b1b6 (diff) | |
v2.4.1.2 -> v2.4.1.3
- Jens: better ordering of requests when unable to merge
- Neil Brown: make md work as a module again (we cannot autodetect
in modules, not enough background information)
- Neil Brown: raid5 SMP locking cleanups
- Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and
dentry leak fix
- maestro3 shutdown fix
- fix dcache hash calculation that could cause bad hashes under certain
circumstances (Dean Gaudet)
- David Miller: networking and sparc updates
- Jeff Garzik: include file cleanups
- Andy Grover: ACPI update
- Coda-fs error return fixes
- rth: alpha Jensen update
Diffstat (limited to 'drivers')
469 files changed, 2071 insertions, 1741 deletions
diff --git a/drivers/acorn/char/keyb_arc.c b/drivers/acorn/char/keyb_arc.c index 1105b57bbe18..6220c2f11bd2 100644 --- a/drivers/acorn/char/keyb_arc.c +++ b/drivers/acorn/char/keyb_arc.c @@ -19,7 +19,7 @@ #include <linux/tty.h> #include <linux/tty_flip.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ptrace.h> #include <linux/signal.h> #include <linux/timer.h> diff --git a/drivers/acorn/char/keyb_ps2.c b/drivers/acorn/char/keyb_ps2.c index d5aa88e969bd..27be184f9117 100644 --- a/drivers/acorn/char/keyb_ps2.c +++ b/drivers/acorn/char/keyb_ps2.c @@ -17,7 +17,7 @@ #include <linux/tty.h> #include <linux/tty_flip.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ptrace.h> #include <linux/signal.h> #include <linux/timer.h> diff --git a/drivers/acorn/char/pcf8583.c b/drivers/acorn/char/pcf8583.c index ffc9308dde84..4abb030700c4 100644 --- a/drivers/acorn/char/pcf8583.c +++ b/drivers/acorn/char/pcf8583.c @@ -10,7 +10,7 @@ * Driver for PCF8583 RTC & RAM chip */ #include <linux/i2c.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/mc146818rtc.h> #include <linux/init.h> diff --git a/drivers/acorn/net/ether1.c b/drivers/acorn/net/ether1.c index 2cd3368630a3..54329f72f98b 100644 --- a/drivers/acorn/net/ether1.c +++ b/drivers/acorn/net/ether1.c @@ -40,7 +40,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/errno.h> #include <linux/init.h> diff --git a/drivers/acorn/net/ether3.c b/drivers/acorn/net/ether3.c index ddcd54753095..5d4795596b2f 100644 --- a/drivers/acorn/net/ether3.c +++ b/drivers/acorn/net/ether3.c @@ -55,7 +55,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/errno.h> #include <linux/netdevice.h> diff --git a/drivers/acorn/net/etherh.c b/drivers/acorn/net/etherh.c index 37896ff3af74..3a64f082d3a4 100644 --- a/drivers/acorn/net/etherh.c +++ b/drivers/acorn/net/etherh.c @@ -36,7 +36,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/errno.h> #include <linux/netdevice.h> diff --git a/drivers/acorn/scsi/queue.c b/drivers/acorn/scsi/queue.c index bf92ee668399..206afdbdb2c4 100644 --- a/drivers/acorn/scsi/queue.c +++ b/drivers/acorn/scsi/queue.c @@ -18,7 +18,7 @@ #include <linux/blk.h> #include <linux/kernel.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/spinlock.h> #include <linux/list.h> #include <linux/init.h> diff --git a/drivers/acpi/acpi_ksyms.c b/drivers/acpi/acpi_ksyms.c index 8e1774c9a99d..e28333d3a200 100644 --- a/drivers/acpi/acpi_ksyms.c +++ b/drivers/acpi/acpi_ksyms.c @@ -18,6 +18,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include <linux/config.h> #include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h> diff --git a/drivers/acpi/cmbatt.c b/drivers/acpi/cmbatt.c index d17f87d97685..8d9cb376864c 100644 --- a/drivers/acpi/cmbatt.c +++ b/drivers/acpi/cmbatt.c @@ -24,6 +24,8 @@ * - parse returned data from _BST and _BIF * Andy Grover <andrew.grover@intel.com> 2000-12-8 * - improved proc interface + * Pavel Machek <pavel@suse.cz> 2001-1-31 + * - fixed oops on NULLs in return from _BIF */ #include <linux/kernel.h> @@ -44,6 +46,8 @@ #define MAX_CM_BATTERIES 0x8 #define MAX_BATT_STRLEN 0x20 +#define Xstrncpy(a, b, c) if (b) strncpy(a,b,c); else strncpy(a, "unknown", c) + struct cmbatt_info { u32 power_unit; @@ -163,9 +167,7 @@ acpi_get_battery_info(ACPI_HANDLE handle, struct cmbatt_info *result) result->battery_capacity_granularity_1=objs[7].integer.value; result->battery_capacity_granularity_2=objs[8].integer.value; -#define Xstrncpy(a, b, c) if (b) strncpy(a,b,c); else strncpy(a, "unknown", c); - - /* BUG: trailing NULL issue */ + /* BUG: trailing NULL issue */ Xstrncpy(result->model_number, objs[9].string.pointer, MAX_BATT_STRLEN-1); Xstrncpy(result->serial_number, objs[10].string.pointer, MAX_BATT_STRLEN-1); Xstrncpy(result->battery_type, objs[11].string.pointer, MAX_BATT_STRLEN-1); @@ -248,38 +250,32 @@ proc_read_batt_info(char *page, char **start, off_t off, goto end; } - if (info->last_full_capacity == ACPI_BATT_UNKNOWN) - p += sprintf(p, "Unknown last full capacity\n"); - else - p += sprintf(p, "Last Full Capacity %x %s /hr\n", + if (info->last_full_capacity != ACPI_BATT_UNKNOWN) + p += sprintf(p, "Last Full Capacity: %d %sh\n", info->last_full_capacity, batt_list[batt_num].power_unit); - if (info->design_capacity == ACPI_BATT_UNKNOWN) - p += sprintf(p, "Unknown Design Capacity\n"); - else - p += sprintf(p, "Design Capacity %x %s /hr\n", + if (info->design_capacity != ACPI_BATT_UNKNOWN) + p += sprintf(p, "Design Capacity: %d %sh\n", info->design_capacity, batt_list[batt_num].power_unit); if (info->battery_technology) - p += sprintf(p, "Secondary Battery Technology\n"); + p += sprintf(p, "Battery Technology: Secondary\n"); else - p += sprintf(p, "Primary Battery Technology\n"); + p += sprintf(p, "Battery Technology: Primary\n"); - if (info->design_voltage == ACPI_BATT_UNKNOWN) - p += sprintf(p, "Unknown Design Voltage\n"); - else - p += sprintf(p, "Design Voltage %x mV\n", + if (info->design_voltage != ACPI_BATT_UNKNOWN) + p += sprintf(p, "Design Voltage: %d mV\n", info->design_voltage); - p += sprintf(p, "Design Capacity Warning %d\n", - info->design_capacity_warning); - p += sprintf(p, "Design Capacity Low %d\n", - info->design_capacity_low); - p += sprintf(p, "Battery Capacity Granularity 1 %d\n", + p += sprintf(p, "Design Capacity Warning: %d %sh\n", + info->design_capacity_warning, batt_list[batt_num].power_unit); + p += sprintf(p, "Design Capacity Low: %d %sh\n", + info->design_capacity_low, batt_list[batt_num].power_unit); + p += sprintf(p, "Battery Capacity Granularity 1: %d\n", info->battery_capacity_granularity_1); - p += sprintf(p, "Battery Capacity Granularity 2 %d\n", + p += sprintf(p, "Battery Capacity Granularity 2: %d\n", info->battery_capacity_granularity_2); - p += sprintf(p, "model number %s\nserial number %s\nbattery type %s\nOEM info %s\n", + p += sprintf(p, "Model number; %s\nSerial number: %s\nBattery type: %s\nOEM info: %s\n", info->model_number,info->serial_number, info->battery_type,info->oem_info); end: @@ -310,38 +306,28 @@ proc_read_batt_status(char *page, char **start, off_t off, goto end; } - printk("getting batt status\n"); - if (acpi_get_battery_status(batt_list[batt_num].handle, &status) != AE_OK) { printk(KERN_ERR "Cmbatt: acpi_get_battery_status failed\n"); goto end; } - p += sprintf(p, "Remaining Capacity: %x\n", status.remaining_capacity); - - if (status.state & 0x1) - p += sprintf(p, "Battery discharging\n"); - if (status.state & 0x2) - p += sprintf(p, "Battery charging\n"); - if (status.state & 0x4) - p += sprintf(p, "Battery critically low\n"); + p += sprintf(p, "Battery discharging: %s\n", + (status.state & 0x1)?"yes":"no"); + p += sprintf(p, "Battery charging: %s\n", + (status.state & 0x2)?"yes":"no"); + p += sprintf(p, "Battery critically low: %s\n", + (status.state & 0x4)?"yes":"no"); - if (status.present_rate == ACPI_BATT_UNKNOWN) - p += sprintf(p, "Battery rate unknown\n"); - else - p += sprintf(p, "Battery rate %x\n", - status.present_rate); + if (status.present_rate != ACPI_BATT_UNKNOWN) + p += sprintf(p, "Battery rate: %d %s\n", + status.present_rate, batt_list[batt_num].power_unit); - if (status.remaining_capacity == ACPI_BATT_UNKNOWN) - p += sprintf(p, "Battery capacity unknown\n"); - else - p += sprintf(p, "Battery capacity %x %s\n", + if (status.remaining_capacity != ACPI_BATT_UNKNOWN) + p += sprintf(p, "Battery capacity: %d %sh\n", status.remaining_capacity, batt_list[batt_num].power_unit); - if (status.present_voltage == ACPI_BATT_UNKNOWN) - p += sprintf(p, "Battery voltage unknown\n"); - else - p += sprintf(p, "Battery voltage %x volts\n", + if (status.present_voltage != ACPI_BATT_UNKNOWN) + p += sprintf(p, "Battery voltage: %d mV\n", status.present_voltage); end: diff --git a/drivers/acpi/common/cmcopy.c b/drivers/acpi/common/cmcopy.c index da3851c17828..3f1a7b36cd15 100644 --- a/drivers/acpi/common/cmcopy.c +++ b/drivers/acpi/common/cmcopy.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: cmcopy - Internal to external object translation utilities - * $Revision: 62 $ + * $Revision: 66 $ * *****************************************************************************/ @@ -27,51 +27,39 @@ #include "acpi.h" #include "acinterp.h" #include "acnamesp.h" +#include "amlcode.h" #define _COMPONENT MISCELLANEOUS MODULE_NAME ("cmcopy") -typedef struct search_st -{ - ACPI_OPERAND_OBJECT *internal_obj; - u32 index; - ACPI_OBJECT *external_obj; - -} PKG_SEARCH_INFO; - - -/* Used to traverse nested packages */ - -PKG_SEARCH_INFO level[MAX_PACKAGE_DEPTH]; - -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_build_external_simple_object + * FUNCTION: Acpi_cm_copy_isimple_to_esimple * - * PARAMETERS: *Internal_obj - Pointer to the object we are examining - * *Buffer - Where the object is returned - * *Space_used - Where the data length is returned + * PARAMETERS: *Internal_object - Pointer to the object we are examining + * *Buffer - Where the object is returned + * *Space_used - Where the data length is returned * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to place a simple object in a user - * buffer. + * buffer. * * The buffer is assumed to have sufficient space for the object. * ******************************************************************************/ static ACPI_STATUS -acpi_cm_build_external_simple_object ( - ACPI_OPERAND_OBJECT *internal_obj, - ACPI_OBJECT *external_obj, +acpi_cm_copy_isimple_to_esimple ( + ACPI_OPERAND_OBJECT *internal_object, + ACPI_OBJECT *external_object, u8 *data_space, u32 *buffer_space_used) { u32 length = 0; - u8 *source_ptr = NULL; + ACPI_STATUS status = AE_OK; /* @@ -79,116 +67,221 @@ acpi_cm_build_external_simple_object ( * package element */ - if (!internal_obj) { + if (!internal_object) { *buffer_space_used = 0; return (AE_OK); } /* Always clear the external object */ - MEMSET (external_obj, 0, sizeof (ACPI_OBJECT)); + MEMSET (external_object, 0, sizeof (ACPI_OBJECT)); /* * In general, the external object will be the same type as * the internal object */ - external_obj->type = internal_obj->common.type; + external_object->type = internal_object->common.type; /* However, only a limited number of external types are supported */ - switch (external_obj->type) + switch (internal_object->common.type) { case ACPI_TYPE_STRING: - length = internal_obj->string.length + 1; - external_obj->string.length = internal_obj->string.length; - external_obj->string.pointer = (NATIVE_CHAR *) data_space; - source_ptr = (u8 *) internal_obj->string.pointer; + length = internal_object->string.length + 1; + external_object->string.length = internal_object->string.length; + external_object->string.pointer = (NATIVE_CHAR *) data_space; + MEMCPY ((void *) data_space, (void *) internal_object->string.pointer, length); break; case ACPI_TYPE_BUFFER: - length = internal_obj->buffer.length; - external_obj->buffer.length = internal_obj->buffer.length; - external_obj->buffer.pointer = data_space; - source_ptr = (u8 *) internal_obj->buffer.pointer; + length = internal_object->buffer.length; + external_object->buffer.length = internal_object->buffer.length; + external_object->buffer.pointer = data_space; + MEMCPY ((void *) data_space, (void *) internal_object->buffer.pointer, length); break; case ACPI_TYPE_INTEGER: - external_obj->integer.value= internal_obj->integer.value; + external_object->integer.value= internal_object->integer.value; break; case INTERNAL_TYPE_REFERENCE: /* - * This is an object reference. We use the object type of "Any" - * to indicate a reference object containing a handle to an ACPI - * named object. + * This is an object reference. Attempt to dereference it. */ - external_obj->type = ACPI_TYPE_ANY; - external_obj->reference.handle = internal_obj->reference.node; + switch (internal_object->reference.op_code) + { + case AML_ZERO_OP: + external_object->type = ACPI_TYPE_INTEGER; + external_object->integer.value = 0; + break; + + case AML_ONE_OP: + external_object->type = ACPI_TYPE_INTEGER; + external_object->integer.value = 1; + break; + + case AML_ONES_OP: + external_object->type = ACPI_TYPE_INTEGER; + external_object->integer.value = ACPI_INTEGER_MAX; + break; + + case AML_NAMEPATH_OP: + /* + * This is a named reference, get the string. We already know that + * we have room for it, use max length + */ + length = MAX_STRING_LENGTH; + external_object->type = ACPI_TYPE_STRING; + external_object->string.pointer = (NATIVE_CHAR *) data_space; + status = acpi_ns_handle_to_pathname ((ACPI_HANDLE *) internal_object->reference.node, + &length, (char *) data_space); + break; + + default: + /* + * Use the object type of "Any" to indicate a reference + * to object containing a handle to an ACPI named object. + */ + external_object->type = ACPI_TYPE_ANY; + external_object->reference.handle = internal_object->reference.node; + break; + } break; case ACPI_TYPE_PROCESSOR: - external_obj->processor.proc_id = - internal_obj->processor.proc_id; - - external_obj->processor.pblk_address = - internal_obj->processor.address; - - external_obj->processor.pblk_length = - internal_obj->processor.length; + external_object->processor.proc_id = internal_object->processor.proc_id; + external_object->processor.pblk_address = internal_object->processor.address; + external_object->processor.pblk_length = internal_object->processor.length; break; + case ACPI_TYPE_POWER: - external_obj->power_resource.system_level = - internal_obj->power_resource.system_level; + external_object->power_resource.system_level = + internal_object->power_resource.system_level; - external_obj->power_resource.resource_order = - internal_obj->power_resource.resource_order; + external_object->power_resource.resource_order = + internal_object->power_resource.resource_order; break; + default: - return (AE_CTRL_RETURN_VALUE); + /* + * There is no corresponding external object type + */ + return (AE_SUPPORT); break; } - /* Copy data if necessary (strings or buffers) */ + *buffer_space_used = (u32) ROUND_UP_TO_NATIVE_WORD (length); + + return (status); +} + + +/******************************************************************************* + * + * FUNCTION: Acpi_cm_copy_ielement_to_eelement + * + * PARAMETERS: ACPI_PKG_CALLBACK + * + * RETURN: Status + * + * DESCRIPTION: Copy one package element to another package element + * + ******************************************************************************/ + +ACPI_STATUS +acpi_cm_copy_ielement_to_eelement ( + u8 object_type, + ACPI_OPERAND_OBJECT *source_object, + ACPI_GENERIC_STATE *state, + void *context) +{ + ACPI_STATUS status = AE_OK; + ACPI_PKG_INFO *info = (ACPI_PKG_INFO *) context; + u32 object_space; + u32 this_index; + ACPI_OBJECT *target_object; + + + this_index = state->pkg.index; + target_object = (ACPI_OBJECT *) + &((ACPI_OBJECT *)(state->pkg.dest_object))->package.elements[this_index]; + + + switch (object_type) + { + case 0: + + /* + * This is a simple or null object -- get the size + */ + + status = acpi_cm_copy_isimple_to_esimple (source_object, + target_object, info->free_space, &object_space); + if (ACPI_FAILURE (status)) { + return (status); + } + + break; + + case 1: - if (length) { /* - * Copy the return data to the caller's buffer + * Build the package object */ - MEMCPY ((void *) data_space, (void *) source_ptr, length); + target_object->type = ACPI_TYPE_PACKAGE; + target_object->package.count = source_object->package.count; + target_object->package.elements = (ACPI_OBJECT *) info->free_space; + + /* + * Pass the new package object back to the package walk routine + */ + state->pkg.this_target_obj = target_object; + + /* + * Save space for the array of objects (Package elements) + * update the buffer length counter + */ + object_space = (u32) ROUND_UP_TO_NATIVE_WORD ( + target_object->package.count * sizeof (ACPI_OBJECT)); + break; + + default: + return (AE_BAD_PARAMETER); } - *buffer_space_used = (u32) ROUND_UP_TO_NATIVE_WORD (length); + info->free_space += object_space; + info->length += object_space; - return (AE_OK); + return (status); } -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_build_external_package_object + * FUNCTION: Acpi_cm_copy_ipackage_to_epackage * - * PARAMETERS: *Internal_obj - Pointer to the object we are returning - * *Buffer - Where the object is returned - * *Space_used - Where the object length is returned + * PARAMETERS: *Internal_object - Pointer to the object we are returning + * *Buffer - Where the object is returned + * *Space_used - Where the object length is returned * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to place a package object in a user * buffer. A package object by definition contains other objects. @@ -200,49 +293,33 @@ acpi_cm_build_external_simple_object ( ******************************************************************************/ static ACPI_STATUS -acpi_cm_build_external_package_object ( - ACPI_OPERAND_OBJECT *internal_obj, +acpi_cm_copy_ipackage_to_epackage ( + ACPI_OPERAND_OBJECT *internal_object, u8 *buffer, u32 *space_used) { - u8 *free_space; - ACPI_OBJECT *external_obj; - u32 current_depth = 0; + ACPI_OBJECT *external_object; ACPI_STATUS status; - u32 length = 0; - u32 this_index; - u32 object_space; - ACPI_OPERAND_OBJECT *this_internal_obj; - ACPI_OBJECT *this_external_obj; - PKG_SEARCH_INFO *level_ptr; + ACPI_PKG_INFO info; /* * First package at head of the buffer */ - external_obj = (ACPI_OBJECT *) buffer; + external_object = (ACPI_OBJECT *) buffer; /* * Free space begins right after the first package */ - free_space = buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); + info.length = 0; + info.object_space = 0; + info.num_packages = 1; + info.free_space = buffer + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - /* - * Initialize the working variables - */ - - MEMSET ((void *) level, 0, sizeof (level)); - - level[0].internal_obj = internal_obj; - level[0].external_obj = external_obj; - level[0].index = 0; - level_ptr = &level[0]; - current_depth = 0; - - external_obj->type = internal_obj->common.type; - external_obj->package.count = internal_obj->package.count; - external_obj->package.elements = (ACPI_OBJECT *) free_space; + external_object->type = internal_object->common.type; + external_object->package.count = internal_object->package.count; + external_object->package.elements = (ACPI_OBJECT *) info.free_space; /* @@ -250,136 +327,27 @@ acpi_cm_build_external_package_object ( * and move the free space past it */ - free_space += external_obj->package.count * + info.free_space += external_object->package.count * ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); - while (1) { - this_index = level_ptr->index; - this_internal_obj = - (ACPI_OPERAND_OBJECT *) - level_ptr->internal_obj->package.elements[this_index]; - this_external_obj = - (ACPI_OBJECT *) - &level_ptr->external_obj->package.elements[this_index]; - - - /* - * Check for - * 1) Null object -- OK, this can happen if package - * element is never initialized - * 2) Not an internal object - can be Node instead - * 3) Any internal object other than a package. - * - * The more complex package case is handled later - */ - - if ((!this_internal_obj) || - (!VALID_DESCRIPTOR_TYPE ( - this_internal_obj, ACPI_DESC_TYPE_INTERNAL)) || - (!IS_THIS_OBJECT_TYPE ( - this_internal_obj, ACPI_TYPE_PACKAGE))) - { - /* - * This is a simple or null object -- get the size - */ - - status = - acpi_cm_build_external_simple_object (this_internal_obj, - this_external_obj, - free_space, - &object_space); - if (ACPI_FAILURE (status)) { - return (status); - } - - free_space += object_space; - length += object_space; - - level_ptr->index++; - while (level_ptr->index >= - level_ptr->internal_obj->package.count) - { - /* - * We've handled all of the objects at this - * level. This means that we have just - * completed a package. That package may - * have contained one or more packages - * itself - */ - if (current_depth == 0) { - /* - * We have handled all of the objects - * in the top level package just add - * the length of the package objects - * and get out - */ - *space_used = length; - return (AE_OK); - } - - /* - * go back up a level and move the index - * past the just completed package object. - */ - current_depth--; - level_ptr = &level[current_depth]; - level_ptr->index++; - } - } - + status = acpi_cm_walk_package_tree (internal_object, external_object, + acpi_cm_copy_ielement_to_eelement, &info); - else { - /* - * This object is a package - * -- we must go one level deeper - */ - if (current_depth >= MAX_PACKAGE_DEPTH-1) { - /* - * Too many nested levels of packages - * for us to handle - */ - return (AE_LIMIT); - } + *space_used = info.length; - /* - * Build the package object - */ - this_external_obj->type = ACPI_TYPE_PACKAGE; - this_external_obj->package.count = - this_internal_obj->package.count; - this_external_obj->package.elements = - (ACPI_OBJECT *) free_space; + return (status); - /* - * Save space for the array of objects (Package elements) - * update the buffer length counter - */ - object_space = (u32) ROUND_UP_TO_NATIVE_WORD ( - this_external_obj->package.count * - sizeof (ACPI_OBJECT)); - - free_space += object_space; - length += object_space; - - current_depth++; - level_ptr = &level[current_depth]; - level_ptr->internal_obj = this_internal_obj; - level_ptr->external_obj = this_external_obj; - level_ptr->index = 0; - } - } } - -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_build_external_object + * FUNCTION: Acpi_cm_copy_iobject_to_eobject * - * PARAMETERS: *Internal_obj - The internal object to be converted - * *Buffer_ptr - Where the object is returned + * PARAMETERS: *Internal_object - The internal object to be converted + * *Buffer_ptr - Where the object is returned * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to build an API object to be returned to * the caller. @@ -387,35 +355,31 @@ acpi_cm_build_external_package_object ( ******************************************************************************/ ACPI_STATUS -acpi_cm_build_external_object ( - ACPI_OPERAND_OBJECT *internal_obj, +acpi_cm_copy_iobject_to_eobject ( + ACPI_OPERAND_OBJECT *internal_object, ACPI_BUFFER *ret_buffer) { ACPI_STATUS status; - if (IS_THIS_OBJECT_TYPE (internal_obj, ACPI_TYPE_PACKAGE)) { + if (IS_THIS_OBJECT_TYPE (internal_object, ACPI_TYPE_PACKAGE)) { /* - * Package objects contain other objects (which can be objects) - * buildpackage does it all + * Package object: Copy all subobjects (including + * nested packages) */ - status = - acpi_cm_build_external_package_object (internal_obj, - ret_buffer->pointer, - &ret_buffer->length); + status = acpi_cm_copy_ipackage_to_epackage (internal_object, + ret_buffer->pointer, &ret_buffer->length); } else { /* * Build a simple object (no nested objects) */ - status = - acpi_cm_build_external_simple_object (internal_obj, - (ACPI_OBJECT *) ret_buffer->pointer, - ((u8 *) ret_buffer->pointer + - ROUND_UP_TO_NATIVE_WORD ( - sizeof (ACPI_OBJECT))), - &ret_buffer->length); + status = acpi_cm_copy_isimple_to_esimple (internal_object, + (ACPI_OBJECT *) ret_buffer->pointer, + ((u8 *) ret_buffer->pointer + + ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), + &ret_buffer->length); /* * build simple does not include the object size in the length * so we add it in here @@ -427,14 +391,14 @@ acpi_cm_build_external_object ( } -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_build_internal_simple_object + * FUNCTION: Acpi_cm_copy_esimple_to_isimple * - * PARAMETERS: *External_obj - The external object to be converted - * *Internal_obj - Where the internal object is returned + * PARAMETERS: *External_object - The external object to be converted + * *Internal_object - Where the internal object is returned * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function copies an external object to an internal one. * NOTE: Pointers can be copied, we don't need to copy data. @@ -444,28 +408,28 @@ acpi_cm_build_external_object ( ******************************************************************************/ ACPI_STATUS -acpi_cm_build_internal_simple_object ( - ACPI_OBJECT *external_obj, - ACPI_OPERAND_OBJECT *internal_obj) +acpi_cm_copy_esimple_to_isimple ( + ACPI_OBJECT *external_object, + ACPI_OPERAND_OBJECT *internal_object) { - internal_obj->common.type = (u8) external_obj->type; + internal_object->common.type = (u8) external_object->type; - switch (external_obj->type) + switch (external_object->type) { case ACPI_TYPE_STRING: - internal_obj->string.length = external_obj->string.length; - internal_obj->string.pointer = external_obj->string.pointer; + internal_object->string.length = external_object->string.length; + internal_object->string.pointer = external_object->string.pointer; break; case ACPI_TYPE_BUFFER: - internal_obj->buffer.length = external_obj->buffer.length; - internal_obj->buffer.pointer = external_obj->buffer.pointer; + internal_object->buffer.length = external_object->buffer.length; + internal_object->buffer.pointer = external_object->buffer.pointer; break; @@ -473,7 +437,7 @@ acpi_cm_build_internal_simple_object ( /* * Number is included in the object itself */ - internal_obj->integer.value = external_obj->integer.value; + internal_object->integer.value = external_object->integer.value; break; @@ -491,11 +455,11 @@ acpi_cm_build_internal_simple_object ( /* Code to convert packages that are parameters to control methods */ -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_build_internal_package_object + * FUNCTION: Acpi_cm_copy_epackage_to_ipackage * - * PARAMETERS: *Internal_obj - Pointer to the object we are returning + * PARAMETERS: *Internal_object - Pointer to the object we are returning * *Buffer - Where the object is returned * *Space_used - Where the length of the object is returned * @@ -511,26 +475,24 @@ acpi_cm_build_internal_simple_object ( ******************************************************************************/ static ACPI_STATUS -acpi_cm_build_internal_package_object ( - ACPI_OPERAND_OBJECT *internal_obj, +acpi_cm_copy_epackage_to_ipackage ( + ACPI_OPERAND_OBJECT *internal_object, u8 *buffer, u32 *space_used) { u8 *free_space; - ACPI_OBJECT *external_obj; - u32 current_depth = 0; + ACPI_OBJECT *external_object; u32 length = 0; u32 this_index; u32 object_space = 0; ACPI_OPERAND_OBJECT *this_internal_obj; ACPI_OBJECT *this_external_obj; - PKG_SEARCH_INFO *level_ptr; /* * First package at head of the buffer */ - external_obj = (ACPI_OBJECT *)buffer; + external_object = (ACPI_OBJECT *)buffer; /* * Free space begins right after the first package @@ -538,20 +500,9 @@ acpi_cm_build_internal_package_object ( free_space = buffer + sizeof(ACPI_OBJECT); - /* - * Initialize the working variables - */ - - MEMSET ((void *) level, 0, sizeof(level)); - - level[0].internal_obj = internal_obj; - level[0].external_obj = external_obj; - level_ptr = &level[0]; - current_depth = 0; - - external_obj->type = internal_obj->common.type; - external_obj->package.count = internal_obj->package.count; - external_obj->package.elements = (ACPI_OBJECT *)free_space; + external_object->type = internal_object->common.type; + external_object->package.count = internal_object->package.count; + external_object->package.elements = (ACPI_OBJECT *)free_space; /* @@ -559,100 +510,21 @@ acpi_cm_build_internal_package_object ( * and move the free space past it */ - free_space += external_obj->package.count * sizeof(ACPI_OBJECT); - - - while (1) { - this_index = level_ptr->index; + free_space += external_object->package.count * sizeof(ACPI_OBJECT); - this_internal_obj = (ACPI_OPERAND_OBJECT *) - &level_ptr->internal_obj->package.elements[this_index]; - - this_external_obj = (ACPI_OBJECT *) - &level_ptr->external_obj->package.elements[this_index]; - - if (IS_THIS_OBJECT_TYPE (this_internal_obj, ACPI_TYPE_PACKAGE)) { - /* - * If this object is a package then we go one deeper - */ - if (current_depth >= MAX_PACKAGE_DEPTH-1) { - /* - * Too many nested levels of packages for us to handle - */ - return (AE_LIMIT); - } - /* - * Build the package object - */ - this_external_obj->type = ACPI_TYPE_PACKAGE; - this_external_obj->package.count = this_internal_obj->package.count; - this_external_obj->package.elements = (ACPI_OBJECT *) free_space; + /* Call Walk_package */ - /* - * Save space for the array of objects (Package elements) - * update the buffer length counter - */ - object_space = this_external_obj->package.count * - sizeof (ACPI_OBJECT); - - free_space += object_space; - length += object_space; - - current_depth++; - level_ptr = &level[current_depth]; - level_ptr->internal_obj = this_internal_obj; - level_ptr->external_obj = this_external_obj; - level_ptr->index = 0; - - } /* if object is a package */ - - else { - free_space += object_space; - length += object_space; - - level_ptr->index++; - while (level_ptr->index >= - level_ptr->internal_obj->package.count) - { - /* - * We've handled all of the objects at - * this level, This means that we have - * just completed a package. That package - * may have contained one or more packages - * itself - */ - if (current_depth == 0) { - /* - * We have handled all of the objects - * in the top level package just add - * the length of the package objects - * and get out - */ - *space_used = length; - return (AE_OK); - } - - /* - * go back up a level and move the index - * past the just completed package object. - */ - current_depth--; - level_ptr = &level[current_depth]; - level_ptr->index++; - } - } /* else object is NOT a package */ - } /* while (1) */ } #endif /* Future implementation */ -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_build_internal_object + * FUNCTION: Acpi_cm_copy_eobject_to_iobject * - * PARAMETERS: *Internal_obj - The external object to be converted + * PARAMETERS: *Internal_object - The external object to be converted * *Buffer_ptr - Where the internal object is returned * * RETURN: Status - the status of the call @@ -662,14 +534,14 @@ acpi_cm_build_internal_package_object ( ******************************************************************************/ ACPI_STATUS -acpi_cm_build_internal_object ( - ACPI_OBJECT *external_obj, - ACPI_OPERAND_OBJECT *internal_obj) +acpi_cm_copy_eobject_to_iobject ( + ACPI_OBJECT *external_object, + ACPI_OPERAND_OBJECT *internal_object) { ACPI_STATUS status; - if (external_obj->type == ACPI_TYPE_PACKAGE) { + if (external_object->type == ACPI_TYPE_PACKAGE) { /* * Package objects contain other objects (which can be objects) * buildpackage does it all @@ -679,7 +551,7 @@ acpi_cm_build_internal_object ( * control methods only. This is a very, very rare case. */ /* - Status = Acpi_cm_build_internal_package_object(Internal_obj, + Status = Acpi_cm_copy_epackage_to_ipackage(Internal_object, Ret_buffer->Pointer, &Ret_buffer->Length); */ @@ -690,7 +562,7 @@ acpi_cm_build_internal_object ( /* * Build a simple object (no nested objects) */ - status = acpi_cm_build_internal_simple_object (external_obj, internal_obj); + status = acpi_cm_copy_esimple_to_isimple (external_object, internal_object); /* * build simple does not include the object size in the length * so we add it in here @@ -700,3 +572,137 @@ acpi_cm_build_internal_object ( return (status); } + +/******************************************************************************* + * + * FUNCTION: Acpi_cm_copy_ielement_to_ielement + * + * PARAMETERS: ACPI_PKG_CALLBACK + * + * RETURN: Status - the status of the call + * + * DESCRIPTION: Copy one package element to another package element + * + ******************************************************************************/ + +ACPI_STATUS +acpi_cm_copy_ielement_to_ielement ( + u8 object_type, + ACPI_OPERAND_OBJECT *source_object, + ACPI_GENERIC_STATE *state, + void *context) +{ + ACPI_STATUS status = AE_OK; + u32 this_index; + ACPI_OPERAND_OBJECT **this_target_ptr; + ACPI_OPERAND_OBJECT *target_object; + + + this_index = state->pkg.index; + this_target_ptr = (ACPI_OPERAND_OBJECT **) + &state->pkg.dest_object->package.elements[this_index]; + + switch (object_type) + { + case 0: + + /* + * This is a simple object, just copy it + */ + target_object = acpi_cm_create_internal_object (source_object->common.type); + if (!target_object) { + return (AE_NO_MEMORY); + } + + status = acpi_aml_store_object_to_object (source_object, target_object, + (ACPI_WALK_STATE *) context); + if (ACPI_FAILURE (status)) { + return (status); + } + + *this_target_ptr = target_object; + break; + + + case 1: + /* + * This object is a package - go down another nesting level + * Create and build the package object + */ + target_object = acpi_cm_create_internal_object (ACPI_TYPE_PACKAGE); + if (!target_object) { + /* TBD: must delete package created up to this point */ + + return (AE_NO_MEMORY); + } + + target_object->package.count = source_object->package.count; + + /* + * Pass the new package object back to the package walk routine + */ + state->pkg.this_target_obj = target_object; + + /* + * Store the object pointer in the parent package object + */ + *this_target_ptr = target_object; + break; + + default: + return (AE_BAD_PARAMETER); + } + + + return (status); +} + + +/******************************************************************************* + * + * FUNCTION: Acpi_cm_copy_ipackage_to_ipackage + * + * PARAMETERS: *Source_obj - Pointer to the source package object + * *Dest_obj - Where the internal object is returned + * + * RETURN: Status - the status of the call + * + * DESCRIPTION: This function is called to copy an internal package object + * into another internal package object. + * + ******************************************************************************/ + +ACPI_STATUS +acpi_cm_copy_ipackage_to_ipackage ( + ACPI_OPERAND_OBJECT *source_obj, + ACPI_OPERAND_OBJECT *dest_obj, + ACPI_WALK_STATE *walk_state) +{ + ACPI_STATUS status = AE_OK; + + + dest_obj->common.type = source_obj->common.type; + dest_obj->package.count = source_obj->package.count; + + + /* + * Create the object array and walk the source package tree + */ + + dest_obj->package.elements = acpi_cm_callocate ((source_obj->package.count + 1) * + sizeof (void *)); + dest_obj->package.next_element = dest_obj->package.elements; + + if (!dest_obj->package.elements) { + REPORT_ERROR ( + ("Aml_build_copy_internal_package_object: Package allocation failure\n")); + return (AE_NO_MEMORY); + } + + + status = acpi_cm_walk_package_tree (source_obj, dest_obj, + acpi_cm_copy_ielement_to_ielement, walk_state); + + return (status); +} + diff --git a/drivers/acpi/common/cmobject.c b/drivers/acpi/common/cmobject.c index 5f73abaafcad..9c23eff7f689 100644 --- a/drivers/acpi/common/cmobject.c +++ b/drivers/acpi/common/cmobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: cmobject - ACPI object create/delete/size/cache routines - * $Revision: 35 $ + * $Revision: 36 $ * *****************************************************************************/ @@ -35,7 +35,7 @@ MODULE_NAME ("cmobject") -/****************************************************************************** +/******************************************************************************* * * FUNCTION: _Cm_create_internal_object * @@ -49,11 +49,11 @@ * * DESCRIPTION: Create and initialize a new internal object. * - * NOTE: - * We always allocate the worst-case object descriptor because these - * objects are cached, and we want them to be one-size-satisifies-any-request. - * This in itself may not be the most memory efficient, but the efficiency - * of the object cache should more than make up for this! + * NOTE: We always allocate the worst-case object descriptor because + * these objects are cached, and we want them to be + * one-size-satisifies-any-request. This in itself may not be + * the most memory efficient, but the efficiency of the object + * cache should more than make up for this! * ******************************************************************************/ @@ -91,7 +91,7 @@ _cm_create_internal_object ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: Acpi_cm_valid_internal_object * @@ -99,7 +99,7 @@ _cm_create_internal_object ( * * RETURN: Validate a pointer to be an ACPI_OPERAND_OBJECT * - *****************************************************************************/ + ******************************************************************************/ u8 acpi_cm_valid_internal_object ( @@ -136,7 +136,7 @@ acpi_cm_valid_internal_object ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: _Cm_allocate_object_desc * @@ -150,7 +150,7 @@ acpi_cm_valid_internal_object ( * DESCRIPTION: Allocate a new object descriptor. Gracefully handle * error conditions. * - ****************************************************************************/ + ******************************************************************************/ void * _cm_allocate_object_desc ( @@ -211,7 +211,7 @@ _cm_allocate_object_desc ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: Acpi_cm_delete_object_desc * @@ -221,7 +221,7 @@ _cm_allocate_object_desc ( * * DESCRIPTION: Free an ACPI object descriptor or add it to the object cache * - ****************************************************************************/ + ******************************************************************************/ void acpi_cm_delete_object_desc ( @@ -274,7 +274,7 @@ acpi_cm_delete_object_desc ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: Acpi_cm_delete_object_cache * @@ -317,7 +317,7 @@ acpi_cm_delete_object_cache ( } -/***************************************************************************** +/******************************************************************************* * * FUNCTION: Acpi_cm_init_static_object * @@ -329,7 +329,7 @@ acpi_cm_delete_object_cache ( * DESCRIPTION: Initialize a static object. Sets flags to disallow dynamic * deletion of the object. * - ****************************************************************************/ + ******************************************************************************/ void acpi_cm_init_static_object ( @@ -365,14 +365,14 @@ acpi_cm_init_static_object ( } -/****************************************************************************** +/******************************************************************************* * * FUNCTION: Acpi_cm_get_simple_object_size * - * PARAMETERS: *Internal_obj - Pointer to the object we are examining - * *Ret_length - Where the length is returned + * PARAMETERS: *Internal_object - Pointer to the object we are examining + * *Ret_length - Where the length is returned * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to determine the space required to * contain a simple object for return to an API user. @@ -384,7 +384,7 @@ acpi_cm_init_static_object ( ACPI_STATUS acpi_cm_get_simple_object_size ( - ACPI_OPERAND_OBJECT *internal_obj, + ACPI_OPERAND_OBJECT *internal_object, u32 *obj_length) { u32 length; @@ -393,7 +393,7 @@ acpi_cm_get_simple_object_size ( /* Handle a null object (Could be a uninitialized package element -- which is legal) */ - if (!internal_obj) { + if (!internal_object) { *obj_length = 0; return (AE_OK); } @@ -403,7 +403,7 @@ acpi_cm_get_simple_object_size ( length = sizeof (ACPI_OBJECT); - if (VALID_DESCRIPTOR_TYPE (internal_obj, ACPI_DESC_TYPE_NAMED)) { + if (VALID_DESCRIPTOR_TYPE (internal_object, ACPI_DESC_TYPE_NAMED)) { /* Object is a named object (reference), just return the length */ *obj_length = (u32) ROUND_UP_TO_NATIVE_WORD (length); @@ -419,18 +419,18 @@ acpi_cm_get_simple_object_size ( * TBD:[Investigate] do strings and buffers require alignment also? */ - switch (internal_obj->common.type) + switch (internal_object->common.type) { case ACPI_TYPE_STRING: - length += internal_obj->string.length + 1; + length += internal_object->string.length + 1; break; case ACPI_TYPE_BUFFER: - length += internal_obj->buffer.length; + length += internal_object->buffer.length; break; @@ -450,7 +450,7 @@ acpi_cm_get_simple_object_size ( * The only type that should be here is opcode AML_NAMEPATH_OP -- since * this means an object reference */ - if (internal_obj->reference.op_code != AML_NAMEPATH_OP) { + if (internal_object->reference.op_code != AML_NAMEPATH_OP) { status = AE_TYPE; } break; @@ -475,149 +475,119 @@ acpi_cm_get_simple_object_size ( } -/****************************************************************************** +/******************************************************************************* * - * FUNCTION: Acpi_cm_get_package_object_size + * FUNCTION: Acpi_cm_copy_package_to_internal * - * PARAMETERS: *Internal_obj - Pointer to the object we are examining - * *Ret_length - Where the length is returned + * PARAMETERS: ACPI_PKG_CALLBACK * * RETURN: Status - the status of the call * - * DESCRIPTION: This function is called to determine the space required to contain - * a package object for return to an API user. - * - * This is moderately complex since a package contains other objects - * including packages. + * DESCRIPTION: * ******************************************************************************/ ACPI_STATUS -acpi_cm_get_package_object_size ( - ACPI_OPERAND_OBJECT *internal_obj, - u32 *obj_length) +acpi_cm_get_element_length ( + u8 object_type, + ACPI_OPERAND_OBJECT *source_object, + ACPI_GENERIC_STATE *state, + void *context) { - - ACPI_OPERAND_OBJECT *this_internal_obj; - ACPI_OPERAND_OBJECT *parent_obj[MAX_PACKAGE_DEPTH]; - ACPI_OPERAND_OBJECT *this_parent; - u32 this_index; - u32 index[MAX_PACKAGE_DEPTH]; - u32 length = 0; + ACPI_STATUS status = AE_OK; + ACPI_PKG_INFO *info = (ACPI_PKG_INFO *) context; u32 object_space; - u32 current_depth = 0; - u32 package_count = 1; - ACPI_STATUS status; - /* Init the package stack TBD: replace with linked list */ - - MEMSET(parent_obj, 0, MAX_PACKAGE_DEPTH); - MEMSET(index, 0, MAX_PACKAGE_DEPTH); + switch (object_type) + { + case 0: - parent_obj[0] = internal_obj; + /* + * Simple object - just get the size (Null object/entry is handled + * here also) and sum it into the running package length + */ + status = acpi_cm_get_simple_object_size (source_object, &object_space); + if (ACPI_FAILURE (status)) { + return (status); + } - while (1) { - this_parent = parent_obj[current_depth]; - this_index = index[current_depth]; - this_internal_obj = this_parent->package.elements[this_index]; + info->length += object_space; + break; - /* - * Check for 1) An uninitialized package element. It is completely - * legal to declare a package and leave it uninitialized - * 2) Any type other than a package. Packages are handled - * below. - */ + case 1: + /* Package - nothing much to do here, let the walk handle it */ - if ((!this_internal_obj) || - (!IS_THIS_OBJECT_TYPE (this_internal_obj, ACPI_TYPE_PACKAGE))) - { - /* - * Simple object - just get the size (Null object/entry handled - * also) - */ - - status = - acpi_cm_get_simple_object_size (this_internal_obj, &object_space); - - if (ACPI_FAILURE (status)) { - return (status); - } - - length += object_space; - - index[current_depth]++; - while (index[current_depth] >= - parent_obj[current_depth]->package.count) - { - /* - * We've handled all of the objects at - * this level, This means that we have - * just completed a package. That package - * may have contained one or more packages - * itself. - */ - if (current_depth == 0) { - /* - * We have handled all of the objects - * in the top level package just add the - * length of the package objects and - * get out. Round up to the next machine - * word. - */ - length += - ROUND_UP_TO_NATIVE_WORD ( - sizeof (ACPI_OBJECT)) * - package_count; - - *obj_length = length; - - return (AE_OK); - } - - /* - * Go back up a level and move the index - * past the just completed package object. - */ - current_depth--; - index[current_depth]++; - } - } + info->num_packages++; + state->pkg.this_target_obj = NULL; + break; - else { - /* - * This object is a package - * -- go one level deeper - */ - package_count++; - if (current_depth < MAX_PACKAGE_DEPTH-1) { - current_depth++; - parent_obj[current_depth] = this_internal_obj; - index[current_depth] = 0; - } - - else { - /* - * Too many nested levels of packages for us - * to handle - */ - - return (AE_LIMIT); - } - } + default: + return (AE_BAD_PARAMETER); } + + + return (status); } -/****************************************************************************** +/******************************************************************************* + * + * FUNCTION: Acpi_cm_get_package_object_size + * + * PARAMETERS: *Internal_object - Pointer to the object we are examining + * *Ret_length - Where the length is returned + * + * RETURN: Status + * + * DESCRIPTION: This function is called to determine the space required to + * contain a package object for return to an API user. + * + * This is moderately complex since a package contains other + * objects including packages. + * + ******************************************************************************/ + +ACPI_STATUS +acpi_cm_get_package_object_size ( + ACPI_OPERAND_OBJECT *internal_object, + u32 *obj_length) +{ + ACPI_STATUS status; + ACPI_PKG_INFO info; + + + info.length = 0; + info.object_space = 0; + info.num_packages = 1; + + status = acpi_cm_walk_package_tree (internal_object, NULL, + acpi_cm_get_element_length, &info); + + /* + * We have handled all of the objects in all levels of the package. + * just add the length of the package objects themselves. + * Round up to the next machine word. + */ + info.length += ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * + info.num_packages; + + /* Return the total package length */ + + *obj_length = info.length; + return (status); +} + + +/******************************************************************************* * * FUNCTION: Acpi_cm_get_object_size * - * PARAMETERS: *Internal_obj - Pointer to the object we are examining - * *Ret_length - Where the length will be returned + * PARAMETERS: *Internal_object - Pointer to the object we are examining + * *Ret_length - Where the length will be returned * - * RETURN: Status - the status of the call + * RETURN: Status * * DESCRIPTION: This function is called to determine the space required to * contain an object for return to an API user. @@ -626,22 +596,20 @@ acpi_cm_get_package_object_size ( ACPI_STATUS acpi_cm_get_object_size( - ACPI_OPERAND_OBJECT *internal_obj, + ACPI_OPERAND_OBJECT *internal_object, u32 *obj_length) { ACPI_STATUS status; - if ((VALID_DESCRIPTOR_TYPE (internal_obj, ACPI_DESC_TYPE_INTERNAL)) && - (IS_THIS_OBJECT_TYPE (internal_obj, ACPI_TYPE_PACKAGE))) + if ((VALID_DESCRIPTOR_TYPE (internal_object, ACPI_DESC_TYPE_INTERNAL)) && + (IS_THIS_OBJECT_TYPE (internal_object, ACPI_TYPE_PACKAGE))) { - status = - acpi_cm_get_package_object_size (internal_obj, obj_length); + status = acpi_cm_get_package_object_size (internal_object, obj_length); } else { - status = - acpi_cm_get_simple_object_size (internal_obj, obj_length); + status = acpi_cm_get_simple_object_size (internal_object, obj_length); } return (status); diff --git a/drivers/acpi/common/cmutils.c b/drivers/acpi/common/cmutils.c index b0ee8b4d9d00..2bbce16a299b 100644 --- a/drivers/acpi/common/cmutils.c +++ b/drivers/acpi/common/cmutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: cmutils - common utility procedures - * $Revision: 23 $ + * $Revision: 27 $ * ******************************************************************************/ @@ -340,6 +340,41 @@ acpi_cm_create_update_state_and_push ( /******************************************************************************* * + * FUNCTION: Acpi_cm_create_pkg_state_and_push + * + * PARAMETERS: *Object - Object to be added to the new state + * Action - Increment/Decrement + * State_list - List the state will be added to + * + * RETURN: None + * + * DESCRIPTION: Create a new state and push it + * + ******************************************************************************/ + +ACPI_STATUS +acpi_cm_create_pkg_state_and_push ( + void *internal_object, + void *external_object, + u16 index, + ACPI_GENERIC_STATE **state_list) +{ + ACPI_GENERIC_STATE *state; + + + state = acpi_cm_create_pkg_state (internal_object, external_object, index); + if (!state) { + return (AE_NO_MEMORY); + } + + + acpi_cm_push_generic_state (state_list, state); + return (AE_OK); +} + + +/******************************************************************************* + * * FUNCTION: Acpi_cm_push_generic_state * * PARAMETERS: List_head - Head of the state stack @@ -500,6 +535,49 @@ acpi_cm_create_update_state ( /******************************************************************************* * + * FUNCTION: Acpi_cm_create_pkg_state + * + * PARAMETERS: Object - Initial Object to be installed in the + * state + * Action - Update action to be performed + * + * RETURN: Status + * + * DESCRIPTION: Create an "Update State" - a flavor of the generic state used + * to update reference counts and delete complex objects such + * as packages. + * + ******************************************************************************/ + +ACPI_GENERIC_STATE * +acpi_cm_create_pkg_state ( + void *internal_object, + void *external_object, + u16 index) +{ + ACPI_GENERIC_STATE *state; + + + /* Create the generic state object */ + + state = acpi_cm_create_generic_state (); + if (!state) { + return (NULL); + } + + /* Init fields specific to the update struct */ + + state->pkg.source_object = (ACPI_OPERAND_OBJECT *) internal_object; + state->pkg.dest_object = external_object; + state->pkg.index = index; + state->pkg.num_packages = 1; + + return (state); +} + + +/******************************************************************************* + * * FUNCTION: Acpi_cm_create_control_state * * PARAMETERS: None @@ -632,16 +710,20 @@ ACPI_STATUS acpi_cm_resolve_package_references ( ACPI_OPERAND_OBJECT *obj_desc) { - u32 count; - ACPI_OPERAND_OBJECT *sub_object; + u32 count; + ACPI_OPERAND_OBJECT *sub_object; + if (obj_desc->common.type != ACPI_TYPE_PACKAGE) { - /* Must be a package */ + /* The object must be a package */ REPORT_ERROR (("Must resolve Package Refs on a Package\n")); return(AE_ERROR); } + /* + * TBD: what about nested packages? */ + for (count = 0; count < obj_desc->package.count; count++) { sub_object = obj_desc->package.elements[count]; @@ -667,6 +749,130 @@ acpi_cm_resolve_package_references ( /******************************************************************************* * + * FUNCTION: Acpi_cm_walk_package_tree + * + * PARAMETERS: Obj_desc - The Package object on which to resolve refs + * + * RETURN: Status + * + * DESCRIPTION: Walk through a package + * + ******************************************************************************/ + +ACPI_STATUS +acpi_cm_walk_package_tree ( + ACPI_OPERAND_OBJECT *source_object, + void *target_object, + ACPI_PKG_CALLBACK walk_callback, + void *context) +{ + ACPI_STATUS status = AE_OK; + ACPI_GENERIC_STATE *state_list = NULL; + ACPI_GENERIC_STATE *state; + u32 this_index; + ACPI_OPERAND_OBJECT *this_source_obj; + + + state = acpi_cm_create_pkg_state (source_object, target_object, 0); + if (!state) { + return (AE_NO_MEMORY); + } + + while (state) { + this_index = state->pkg.index; + this_source_obj = (ACPI_OPERAND_OBJECT *) + state->pkg.source_object->package.elements[this_index]; + + /* + * Check for + * 1) An uninitialized package element. It is completely + * legal to declare a package and leave it uninitialized + * 2) Not an internal object - can be a namespace node instead + * 3) Any type other than a package. Packages are handled in else case below. + */ + if ((!this_source_obj) || + (!VALID_DESCRIPTOR_TYPE ( + this_source_obj, ACPI_DESC_TYPE_INTERNAL)) || + (!IS_THIS_OBJECT_TYPE ( + this_source_obj, ACPI_TYPE_PACKAGE))) + { + + status = walk_callback (0, this_source_obj, state, context); + if (ACPI_FAILURE (status)) { + /* TBD: must delete package created up to this point */ + + return (status); + } + + state->pkg.index++; + while (state->pkg.index >= state->pkg.source_object->package.count) { + /* + * We've handled all of the objects at this level, This means + * that we have just completed a package. That package may + * have contained one or more packages itself. + * + * Delete this state and pop the previous state (package). + */ + acpi_cm_delete_generic_state (state); + state = acpi_cm_pop_generic_state (&state_list); + + + /* Finished when there are no more states */ + + if (!state) { + /* + * We have handled all of the objects in the top level + * package just add the length of the package objects + * and exit + */ + return (AE_OK); + } + + /* + * Go back up a level and move the index past the just + * completed package object. + */ + state->pkg.index++; + } + } + + else { + /* This is a sub-object of type package */ + + status = walk_callback (1, this_source_obj, state, context); + if (ACPI_FAILURE (status)) { + /* TBD: must delete package created up to this point */ + + return (status); + } + + + /* + * The callback above returned a new target package object. + */ + + /* + * Push the current state and create a new one + */ + acpi_cm_push_generic_state (&state_list, state); + state = acpi_cm_create_pkg_state (this_source_obj, state->pkg.this_target_obj, 0); + if (!state) { + /* TBD: must delete package created up to this point */ + + return (AE_NO_MEMORY); + } + } + } + + /* We should never get here */ + + return (AE_AML_INTERNAL); + +} + + +/******************************************************************************* + * * FUNCTION: _Report_error * * PARAMETERS: Module_name - Caller's module name (for error output) @@ -676,7 +882,7 @@ acpi_cm_resolve_package_references ( * * RETURN: None * - * DESCRIPTION: Print error message from KD table + * DESCRIPTION: Print error message * ******************************************************************************/ @@ -703,7 +909,7 @@ _report_error ( * * RETURN: None * - * DESCRIPTION: Print warning message from KD table + * DESCRIPTION: Print warning message * ******************************************************************************/ @@ -729,7 +935,7 @@ _report_warning ( * * RETURN: None * - * DESCRIPTION: Print information message from KD table + * DESCRIPTION: Print information message * ******************************************************************************/ diff --git a/drivers/acpi/common/cmxface.c b/drivers/acpi/common/cmxface.c index ce87b50d273d..e566b7f21dfe 100644 --- a/drivers/acpi/common/cmxface.c +++ b/drivers/acpi/common/cmxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: cmxface - External interfaces for "global" ACPI functions - * $Revision: 62 $ + * $Revision: 64 $ * *****************************************************************************/ @@ -158,8 +158,7 @@ acpi_enable_subsystem ( if (!(flags & ACPI_NO_ACPI_ENABLE)) { status = acpi_enable (); if (ACPI_FAILURE (status)) { - /* TBD: workaround. Old Lions don't enable properly */ - /*return (Status);*/ + return (status); } } @@ -180,12 +179,11 @@ acpi_enable_subsystem ( /* * Initialize all device objects in the namespace - * This runs the _STA, _INI, and _HID methods, and detects - * the PCI root bus(es) + * This runs the _STA and _INI methods. */ if (!(flags & ACPI_NO_DEVICE_INIT)) { - status = acpi_ns_initialize_devices (flags & ACPI_NO_PCI_INIT); + status = acpi_ns_initialize_devices (); if (ACPI_FAILURE (status)) { return (status); } @@ -193,7 +191,7 @@ acpi_enable_subsystem ( /* - * Initialize the objects that remain unitialized. This + * Initialize the objects that remain uninitialized. This * runs the executable AML that is part of the declaration of Op_regions * and Fields. */ diff --git a/drivers/acpi/cpu.c b/drivers/acpi/cpu.c index 3e4adcee2b79..9f27080bb860 100644 --- a/drivers/acpi/cpu.c +++ b/drivers/acpi/cpu.c @@ -2,6 +2,7 @@ * cpu.c - Processor handling * * Copyright (C) 2000 Andrew Henroid + * Copyright (C) 2001 Andrew Grover * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,27 +29,37 @@ #define _COMPONENT OS_DEPENDENT MODULE_NAME ("cpu") -unsigned long acpi_c2_exit_latency = ACPI_INFINITE; -unsigned long acpi_c3_exit_latency = ACPI_INFINITE; -unsigned long acpi_c2_enter_latency = ACPI_INFINITE; -unsigned long acpi_c3_enter_latency = ACPI_INFINITE; +u32 acpi_c2_exit_latency = ACPI_INFINITE; +u32 acpi_c3_exit_latency = ACPI_INFINITE; +u32 acpi_c2_enter_latency = ACPI_INFINITE; +u32 acpi_c3_enter_latency = ACPI_INFINITE; +u32 acpi_use_idle = TRUE; -static unsigned long acpi_pblk = ACPI_INVALID; +u32 acpi_c1_count = 0; +u32 acpi_c2_count = 0; +u32 acpi_c3_count = 0; + +static u32 acpi_pblk = ACPI_INVALID; static int acpi_c2_tested = 0; static int acpi_c3_tested = 0; static int acpi_max_c_state = 1; -static int acpi_pm_tmr_len; +static int acpi_pm_tmr_len = 24; +#define CPU_POWER_STATES 3 #define MAX_C2_LATENCY 100 #define MAX_C3_LATENCY 1000 +#define ACPI_STATE_C1 0 +#define ACPI_STATE_C2 1 +#define ACPI_STATE_C3 2 + /* * Clear busmaster activity flag */ static inline void acpi_clear_bm_activity(void) { - acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 0); + acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_LOCK, BM_STS, 1); } /* @@ -100,6 +111,7 @@ acpi_compare_pm_timers(u32 first, u32 second) } } + /* * Idle loop (uniprocessor only) */ @@ -109,14 +121,9 @@ acpi_idle(void) static int sleep_level = 1; FADT_DESCRIPTOR *fadt = &acpi_fadt; - if (!fadt - || (STRNCMP(fadt->header.signature, ACPI_FADT_SIGNATURE, ACPI_SIG_LEN) != 0) - || !fadt->Xpm_tmr_blk.address - || !acpi_pblk) - goto not_initialized; - /* - * start from the previous sleep level.. + * start from the previous sleep level. + * if not initialized, we goto sleep1 */ if (sleep_level == 1 || acpi_max_c_state < 2) @@ -126,7 +133,7 @@ acpi_idle(void) || acpi_max_c_state < 3) goto sleep2; - sleep3: +sleep3: sleep_level = 3; if (!acpi_c3_tested) { DEBUG_PRINT(ACPI_INFO, ("C3 works\n")); @@ -147,6 +154,7 @@ acpi_idle(void) goto sleep2; time = acpi_read_pm_timer(); + acpi_c3_count++; inb(acpi_pblk + ACPI_P_LVL3); /* Dummy read, force synchronization with the PMU */ acpi_read_pm_timer(); @@ -154,10 +162,10 @@ acpi_idle(void) __sti(); if (diff < acpi_c3_exit_latency) - goto sleep2; + goto sleep1; } - sleep3_with_arbiter: +sleep3_with_arbiter: for (;;) { unsigned long time; unsigned long diff; @@ -172,6 +180,7 @@ acpi_idle(void) /* Disable arbiter, park on CPU */ acpi_hw_register_bit_access(ACPI_WRITE, ACPI_MTX_LOCK, ARB_DIS, 1); + acpi_c3_count++; inb(acpi_pblk + ACPI_P_LVL3); /* Dummy read, force synchronization with the PMU */ acpi_read_pm_timer(); @@ -181,10 +190,10 @@ acpi_idle(void) __sti(); if (diff < acpi_c3_exit_latency) - goto sleep2; + goto sleep1; } - sleep2: +sleep2: sleep_level = 2; if (!acpi_c2_tested) { DEBUG_PRINT(ACPI_INFO, ("C2 works\n")); @@ -200,6 +209,7 @@ acpi_idle(void) goto out; time = acpi_read_pm_timer(); + acpi_c2_count++; inb(acpi_pblk + ACPI_P_LVL2); /* Dummy read, force synchronization with the PMU */ acpi_read_pm_timer(); @@ -217,7 +227,7 @@ acpi_idle(void) goto sleep3; } - sleep1: +sleep1: sleep_level = 1; acpi_sleep_on_busmaster(); for (;;) { @@ -228,6 +238,7 @@ acpi_idle(void) if (current->need_resched) goto out; time = acpi_read_pm_timer(); + acpi_c1_count++; safe_halt(); diff = acpi_compare_pm_timers(time, acpi_read_pm_timer()); if (diff > acpi_c2_enter_latency @@ -235,15 +246,7 @@ acpi_idle(void) goto sleep2; } - not_initialized: - for (;;) { - __cli(); - if (current->need_resched) - goto out; - safe_halt(); - } - - out: +out: __sti(); } @@ -278,17 +281,17 @@ acpi_found_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value) acpi_c2_exit_latency = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl2_lat); acpi_c2_enter_latency - = ACPI_MICROSEC_TO_TMR_TICKS(ACPI_TMR_HZ / 1000); + = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl2_lat * 4); acpi_max_c_state = 2; printk(KERN_INFO "ACPI: System firmware supports: C2"); - + if (acpi_fadt.plvl3_lat && acpi_fadt.plvl3_lat <= MAX_C3_LATENCY) { acpi_c3_exit_latency = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat); acpi_c3_enter_latency - = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat * 5); + = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat * 12); acpi_max_c_state = 3; printk(" C3"); @@ -297,6 +300,10 @@ acpi_found_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value) printk("\n"); } + printk(KERN_INFO "ACPI: plvl2lat=%d plvl3lat=%d\n", acpi_fadt.plvl2_lat, acpi_fadt.plvl3_lat); + printk(KERN_INFO "ACPI: C2 enter=%d C2 exit=%d\n", acpi_c2_enter_latency, acpi_c2_exit_latency); + printk(KERN_INFO "ACPI: C3 enter=%d C3 exit=%d\n", acpi_c3_enter_latency, acpi_c3_exit_latency); + return AE_OK; } @@ -328,13 +335,19 @@ acpi_cpu_init(void) acpi_pm_timer_init(); - + if (acpi_use_idle) { #ifdef CONFIG_SMP - if (smp_num_cpus == 1) - pm_idle = acpi_idle; + if (smp_num_cpus == 1) + pm_idle = acpi_idle; #else - pm_idle = acpi_idle; + pm_idle = acpi_idle; #endif + printk(KERN_INFO "ACPI: Using ACPI idle\n"); + printk(KERN_INFO "ACPI: If experiencing system slowness, try adding \"acpi=no-idle\" to cmdline\n"); + } + else { + printk(KERN_INFO "ACPI: Not using ACPI idle\n"); + } return 0; } diff --git a/drivers/acpi/dispatcher/dsobject.c b/drivers/acpi/dispatcher/dsobject.c index 0a6c88b4d5fa..a3e0d7a4f4eb 100644 --- a/drivers/acpi/dispatcher/dsobject.c +++ b/drivers/acpi/dispatcher/dsobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines - * $Revision: 56 $ + * $Revision: 57 $ * *****************************************************************************/ @@ -102,6 +102,7 @@ acpi_ds_init_one_object ( info->method_count++; + /* * Set the execution data width (32 or 64) based upon the * revision number of the parent ACPI table. diff --git a/drivers/acpi/dispatcher/dsopcode.c b/drivers/acpi/dispatcher/dsopcode.c index ba06cf4dba4e..12f8f34364ee 100644 --- a/drivers/acpi/dispatcher/dsopcode.c +++ b/drivers/acpi/dispatcher/dsopcode.c @@ -2,7 +2,7 @@ * * Module Name: dsopcode - Dispatcher Op Region support and handling of * "control" opcodes - * $Revision: 30 $ + * $Revision: 32 $ * *****************************************************************************/ @@ -73,7 +73,6 @@ acpi_ds_get_field_unit_arguments ( extra_desc = obj_desc->field_unit.extra; node = obj_desc->field_unit.node; - /* * Allocate a new parser op to be the root of the parsed * Op_region tree diff --git a/drivers/acpi/driver.c b/drivers/acpi/driver.c index 241528fc6cb9..8863e468833f 100644 --- a/drivers/acpi/driver.c +++ b/drivers/acpi/driver.c @@ -60,6 +60,8 @@ static DECLARE_WAIT_QUEUE_HEAD(acpi_event_wait); static volatile int acpi_thread_pid = -1; +static int acpi_start = 1; + /************************************************/ /* DECLARE_TASK_QUEUE is defined in */ /* /usr/src/linux/include/linux/tqueue.h */ @@ -382,6 +384,19 @@ static struct ctl_table acpi_table[] = &acpi_c3_enter_latency, sizeof(acpi_c3_enter_latency), 0644, NULL, &acpi_do_ulong}, + {ACPI_C1_COUNT, "c1_count", + &acpi_c1_count, sizeof(acpi_c1_count), + 0644, NULL, &acpi_do_ulong}, + + {ACPI_C2_COUNT, "c2_count", + &acpi_c2_count, sizeof(acpi_c2_count), + 0644, NULL, &acpi_do_ulong}, + + {ACPI_C3_COUNT, "c3_count", + &acpi_c3_count, sizeof(acpi_c3_count), + 0644, NULL, &acpi_do_ulong}, + + /* until it actually works */ /* {ACPI_SLEEP, "sleep", NULL, 0, 0600, NULL, &acpi_do_sleep},*/ @@ -540,10 +555,16 @@ acpi_thread(void *context) int __init acpi_init(void) { - acpi_thread_pid = kernel_thread(acpi_thread, + if (acpi_start) { + acpi_thread_pid = kernel_thread(acpi_thread, NULL, (CLONE_FS | CLONE_FILES | CLONE_SIGHAND | SIGCHLD)); + } + else { + printk(KERN_INFO "ACPI: Disabled\n"); + } + return ((acpi_thread_pid >= 0) ? 0:-ENODEV); } @@ -571,3 +592,21 @@ acpi_exit(void) module_init(acpi_init); module_exit(acpi_exit); + +#ifndef MODULE +static int __init acpi_setup(char *str) +{ + while ((str != NULL) && (*str != '\0')) { + if (strncmp(str, "no-idle", 7) == 0) + acpi_use_idle = 0; + if (strncmp(str, "off", 3) == 0) + acpi_start = 0; + str = strchr(str, ','); + if (str != NULL) + str += strspn(str, ", \t"); + } + return 1; +} + +__setup("acpi=", acpi_setup); +#endif diff --git a/drivers/acpi/driver.h b/drivers/acpi/driver.h index 9abae5d56eb7..ca6b6dd1f7f3 100644 --- a/drivers/acpi/driver.h +++ b/drivers/acpi/driver.h @@ -37,10 +37,14 @@ int acpi_cpu_init(void); u32 acpi_read_pm_timer(void); -extern unsigned long acpi_c2_exit_latency; -extern unsigned long acpi_c3_exit_latency; -extern unsigned long acpi_c2_enter_latency; -extern unsigned long acpi_c3_enter_latency; +extern u32 acpi_c2_exit_latency; +extern u32 acpi_c3_exit_latency; +extern u32 acpi_c2_enter_latency; +extern u32 acpi_c3_enter_latency; +extern u32 acpi_use_idle; +extern u32 acpi_c1_count; +extern u32 acpi_c2_count; +extern u32 acpi_c3_count; /* * driver.c diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index 5e42683c6ac2..f74a3b671089 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c @@ -554,7 +554,7 @@ found_ec( ec_cxt->need_global_lock = obj.integer.value; - printk(KERN_INFO "ACPI: found EC @ (0x%02x,0x%02x,gpe %d GL %d)\n", + printk(KERN_INFO "ACPI: found EC @ (0x%02x,0x%02x,GPE %d GL %d)\n", ec_cxt->data_port, ec_cxt->status_port, ec_cxt->gpe_bit, ec_cxt->need_global_lock); diff --git a/drivers/acpi/events/evevent.c b/drivers/acpi/events/evevent.c index afdd477db6e5..668bdf253c35 100644 --- a/drivers/acpi/events/evevent.c +++ b/drivers/acpi/events/evevent.c @@ -2,7 +2,7 @@ * * Module Name: evevent - Fixed and General Purpose Acpi_event * handling and dispatch - * $Revision: 33 $ + * $Revision: 34 $ * *****************************************************************************/ @@ -55,7 +55,7 @@ acpi_ev_initialize ( ACPI_STATUS status; - /* Make sure we've got ACPI tables */ + /* Make sure we have ACPI tables */ if (!acpi_gbl_DSDT) { return (AE_NO_ACPI_TABLES); @@ -704,7 +704,7 @@ u32 acpi_ev_gpe_dispatch ( u32 gpe_number) { - ACPI_GPE_LEVEL_INFO gpe_info; + ACPI_GPE_LEVEL_INFO gpe_info; /*DEBUG_INCREMENT_EVENT_COUNT (EVENT_GENERAL);*/ @@ -720,59 +720,58 @@ acpi_ev_gpe_dispatch ( */ acpi_hw_disable_gpe (gpe_number); - gpe_info = acpi_gbl_gpe_info [gpe_number]; - - /* - * Edge-Triggered? - * --------------- - * If edge-triggered, clear the GPE status bit now. Note that - * level-triggered events are cleared after the GPE is serviced. - */ - if (gpe_info.type & ACPI_EVENT_EDGE_TRIGGERED) { - acpi_hw_clear_gpe (gpe_number); - } + gpe_info = acpi_gbl_gpe_info [gpe_number]; + /* + * Edge-Triggered? + * --------------- + * If edge-triggered, clear the GPE status bit now. Note that + * level-triggered events are cleared after the GPE is serviced. + */ + if (gpe_info.type & ACPI_EVENT_EDGE_TRIGGERED) { + acpi_hw_clear_gpe (gpe_number); + } /* * Function Handler (e.g. EC)? */ - if (gpe_info.handler) { - /* Invoke function handler (at interrupt level). */ - gpe_info.handler (gpe_info.context); - - /* Level-Triggered? */ - if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) { - acpi_hw_clear_gpe (gpe_number); - } + if (gpe_info.handler) { + /* Invoke function handler (at interrupt level). */ + gpe_info.handler (gpe_info.context); - /* Enable GPE */ - acpi_hw_enable_gpe (gpe_number); + /* Level-Triggered? */ + if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) { + acpi_hw_clear_gpe (gpe_number); } - /* - * Method Handler (e.g. _Exx/_Lxx)? - */ - else if (gpe_info.method_handle) { - if (ACPI_FAILURE(acpi_os_queue_for_execution (OSD_PRIORITY_GPE, + + /* Enable GPE */ + acpi_hw_enable_gpe (gpe_number); + } + /* + * Method Handler (e.g. _Exx/_Lxx)? + */ + else if (gpe_info.method_handle) { + if (ACPI_FAILURE(acpi_os_queue_for_execution (OSD_PRIORITY_GPE, acpi_ev_asynch_execute_gpe_method, (void*)(NATIVE_UINT)gpe_number))) - { - /* - * Shoudn't occur, but if it does report an error. Note that - * the GPE will remain disabled until the ACPI Core Subsystem - * is restarted, or the handler is removed/reinstalled. - */ - REPORT_ERROR (("Acpi_ev_gpe_dispatch: Unable to queue handler for GPE bit [%X]\n", gpe_number)); - } + { + /* + * Shoudn't occur, but if it does report an error. Note that + * the GPE will remain disabled until the ACPI Core Subsystem + * is restarted, or the handler is removed/reinstalled. + */ + REPORT_ERROR (("Acpi_ev_gpe_dispatch: Unable to queue handler for GPE bit [%X]\n", gpe_number)); } - /* - * No Handler? Report an error and leave the GPE disabled. - */ - else { - REPORT_ERROR (("Acpi_ev_gpe_dispatch: No installed handler for GPE [%X]\n", gpe_number)); + } + /* + * No Handler? Report an error and leave the GPE disabled. + */ + else { + REPORT_ERROR (("Acpi_ev_gpe_dispatch: No installed handler for GPE [%X]\n", gpe_number)); - /* Level-Triggered? */ - if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) { - acpi_hw_clear_gpe (gpe_number); - } + /* Level-Triggered? */ + if (gpe_info.type & ACPI_EVENT_LEVEL_TRIGGERED) { + acpi_hw_clear_gpe (gpe_number); } + } return (INTERRUPT_HANDLED); } diff --git a/drivers/acpi/events/evregion.c b/drivers/acpi/events/evregion.c index 071639a27670..56539d515fb5 100644 --- a/drivers/acpi/events/evregion.c +++ b/drivers/acpi/events/evregion.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evregion - ACPI Address_space (Op_region) handler dispatch - * $Revision: 94 $ + * $Revision: 96 $ * *****************************************************************************/ diff --git a/drivers/acpi/hardware/hwsleep.c b/drivers/acpi/hardware/hwsleep.c index 892c721c6a0d..5ab9b3784c9b 100644 --- a/drivers/acpi/hardware/hwsleep.c +++ b/drivers/acpi/hardware/hwsleep.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 5 $ + * $Revision: 7 $ * *****************************************************************************/ @@ -175,15 +175,14 @@ acpi_enter_sleep_state ( PM1_acontrol |= (type_a << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK)); PM1_bcontrol |= (type_b << acpi_hw_get_bit_shift (SLP_TYPE_X_MASK)); - /* the old version was disabling interrupts. let's try it without - * and see how that works - */ - /*disable();*/ + disable(); acpi_hw_register_write(ACPI_MTX_LOCK, PM1_a_CONTROL, PM1_acontrol); acpi_hw_register_write(ACPI_MTX_LOCK, PM1_b_CONTROL, PM1_bcontrol); + acpi_hw_register_write(ACPI_MTX_LOCK, PM1_CONTROL, + (1 << acpi_hw_get_bit_shift (SLP_EN_MASK))); - /*enable();*/ + enable(); return (AE_OK); } diff --git a/drivers/acpi/hardware/hwtimer.c b/drivers/acpi/hardware/hwtimer.c index b7f529ccf67c..5a56ddeba920 100644 --- a/drivers/acpi/hardware/hwtimer.c +++ b/drivers/acpi/hardware/hwtimer.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwtimer.c - ACPI Power Management Timer Interface - * $Revision: 4 $ + * $Revision: 5 $ * *****************************************************************************/ @@ -133,7 +133,7 @@ acpi_get_timer_duration ( /* * Compute Tick Delta: * ------------------- - * Handle timer rollovers on 24- versus 32-bit timers. + * Handle (max one) timer rollovers on 24- versus 32-bit timers. */ if (start_ticks < end_ticks) { delta_ticks = end_ticks - start_ticks; @@ -141,13 +141,17 @@ acpi_get_timer_duration ( else if (start_ticks > end_ticks) { /* 24-bit Timer */ if (0 == acpi_gbl_FADT->tmr_val_ext) { - delta_ticks = (0x00FFFFFF - start_ticks) + end_ticks; + delta_ticks = (((0x00FFFFFF - start_ticks) + end_ticks) & 0x00FFFFFF); } /* 32-bit Timer */ else { delta_ticks = (0xFFFFFFFF - start_ticks) + end_ticks; } } + else { + *time_elapsed = 0; + return (AE_OK); + } /* * Compute Duration: diff --git a/drivers/acpi/include/accommon.h b/drivers/acpi/include/accommon.h index 61d54a220dcc..feeeef818907 100644 --- a/drivers/acpi/include/accommon.h +++ b/drivers/acpi/include/accommon.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: accommon.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 87 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -27,6 +27,30 @@ #define _ACCOMMON_H +typedef +ACPI_STATUS (*ACPI_PKG_CALLBACK) ( + u8 object_type, + ACPI_OPERAND_OBJECT *source_object, + ACPI_GENERIC_STATE *state, + void *context); + + +ACPI_STATUS +acpi_cm_walk_package_tree ( + ACPI_OPERAND_OBJECT *source_object, + void *target_object, + ACPI_PKG_CALLBACK walk_callback, + void *context); + + +typedef struct acpi_pkg_info +{ + u8 *free_space; + u32 length; + u32 object_space; + u32 num_packages; +} ACPI_PKG_INFO; + #define REF_INCREMENT (u16) 0 #define REF_DECREMENT (u16) 1 #define REF_FORCE_DELETE (u16) 2 @@ -194,29 +218,30 @@ acpi_cm_build_package_object ( u32 *space_used); ACPI_STATUS -acpi_cm_build_external_object ( +acpi_cm_copy_iobject_to_eobject ( ACPI_OPERAND_OBJECT *obj, ACPI_BUFFER *ret_buffer); ACPI_STATUS -acpi_cm_build_internal_simple_object( +acpi_cm_copy_esimple_to_isimple( ACPI_OBJECT *user_obj, ACPI_OPERAND_OBJECT *obj); ACPI_STATUS -acpi_cm_build_internal_object ( +acpi_cm_copy_eobject_to_iobject ( ACPI_OBJECT *obj, ACPI_OPERAND_OBJECT *internal_obj); ACPI_STATUS -acpi_cm_copy_internal_simple_object ( +acpi_cm_copy_isimple_to_isimple ( ACPI_OPERAND_OBJECT *source_obj, ACPI_OPERAND_OBJECT *dest_obj); ACPI_STATUS -acpi_cm_build_copy_internal_package_object ( +acpi_cm_copy_ipackage_to_ipackage ( ACPI_OPERAND_OBJECT *source_obj, - ACPI_OPERAND_OBJECT *dest_obj); + ACPI_OPERAND_OBJECT *dest_obj, + ACPI_WALK_STATE *walk_state); /* @@ -526,12 +551,25 @@ acpi_cm_create_update_state ( ACPI_OPERAND_OBJECT *object, u16 action); +ACPI_GENERIC_STATE * +acpi_cm_create_pkg_state ( + void *internal_object, + void *external_object, + u16 index); + ACPI_STATUS acpi_cm_create_update_state_and_push ( ACPI_OPERAND_OBJECT *object, u16 action, ACPI_GENERIC_STATE **state_list); +ACPI_STATUS +acpi_cm_create_pkg_state_and_push ( + void *internal_object, + void *external_object, + u16 index, + ACPI_GENERIC_STATE **state_list); + ACPI_GENERIC_STATE * acpi_cm_create_control_state ( void); @@ -564,6 +602,15 @@ ACPI_STATUS acpi_cm_resolve_package_references ( ACPI_OPERAND_OBJECT *obj_desc); +#ifdef ACPI_DEBUG + +void +acpi_cm_display_init_pathname ( + ACPI_HANDLE obj_handle, + char *path); + +#endif + /* * Memory allocation functions and related macros. diff --git a/drivers/acpi/include/acconfig.h b/drivers/acpi/include/acconfig.h index ea9be649d745..e45c17db84b3 100644 --- a/drivers/acpi/include/acconfig.h +++ b/drivers/acpi/include/acconfig.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acconfig.h - Global configuration constants - * $Revision: 53 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -53,7 +53,7 @@ /* Version string */ -#define ACPI_CA_VERSION 0x20010125 +#define ACPI_CA_VERSION 0x20010208 /* Maximum objects in the various object caches */ @@ -149,10 +149,5 @@ #define RSDP_SCAN_STEP 16 -/* Maximum nesting of package objects */ - -#define MAX_PACKAGE_DEPTH 16 - - #endif /* _ACCONFIG_H */ diff --git a/drivers/acpi/include/acdebug.h b/drivers/acpi/include/acdebug.h index f1fa7094ef18..d645cceb7c8c 100644 --- a/drivers/acpi/include/acdebug.h +++ b/drivers/acpi/include/acdebug.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdebug.h - ACPI/AML debugger - * $Revision: 39 $ + * $Revision: 41 $ * *****************************************************************************/ @@ -43,6 +43,7 @@ extern u8 opt_disasm; extern u8 opt_stats; extern u8 opt_parse_jit; extern u8 opt_verbose; +extern u8 opt_ini_methods; extern NATIVE_CHAR *args[DB_MAX_ARGS]; @@ -198,6 +199,10 @@ void acpi_db_find_references ( NATIVE_CHAR *object_arg); +void +acpi_db_display_resources ( + NATIVE_CHAR *object_arg); + /* * dbdisasm - AML disassembler diff --git a/drivers/acpi/include/acgcc.h b/drivers/acpi/include/acgcc.h index 82b1e5139a99..d92af99d6aa8 100644 --- a/drivers/acpi/include/acgcc.h +++ b/drivers/acpi/include/acgcc.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acgcc.h - GCC specific defines, etc. - * $Revision: 4 $ + * $Revision: 5 $ * *****************************************************************************/ @@ -26,12 +26,11 @@ #ifndef __ACGCC_H__ #define __ACGCC_H__ -#define COMPILER_DEPENDENT_UINT64 unsigned long long - #ifdef __ia64__ #define _IA64 +#define COMPILER_DEPENDENT_UINT64 unsigned long /* Single threaded */ #define ACPI_APPLICATION @@ -95,8 +94,7 @@ #else /* DO IA32 */ - - +#define COMPILER_DEPENDENT_UINT64 unsigned long long #define ACPI_ASM_MACROS #define causeinterrupt(level) #define BREAKPOINT3 diff --git a/drivers/acpi/include/acinterp.h b/drivers/acpi/include/acinterp.h index 6eb571e5fae0..94d739a07876 100644 --- a/drivers/acpi/include/acinterp.h +++ b/drivers/acpi/include/acinterp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acinterp.h - Interpreter subcomponent prototypes and defines - * $Revision: 91 $ + * $Revision: 92 $ * *****************************************************************************/ @@ -558,12 +558,6 @@ acpi_aml_unsigned_integer_to_string ( ACPI_INTEGER value, NATIVE_CHAR *out_string); -ACPI_STATUS -acpi_aml_build_copy_internal_package_object ( - ACPI_OPERAND_OBJECT *source_obj, - ACPI_OPERAND_OBJECT *dest_obj, - ACPI_WALK_STATE *walk_state); - /* * amregion - default Op_region handlers diff --git a/drivers/acpi/include/aclinux.h b/drivers/acpi/include/aclinux.h index 0cf0e2845519..f86c83239823 100644 --- a/drivers/acpi/include/aclinux.h +++ b/drivers/acpi/include/aclinux.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: aclinux.h - OS specific defines, etc. - * $Revision: 7 $ + * $Revision: 9 $ * *****************************************************************************/ @@ -26,14 +26,15 @@ #ifndef __ACLINUX_H__ #define __ACLINUX_H__ - #define ACPI_OS_NAME "Linux" +#include <linux/config.h> #include <linux/string.h> #include <linux/kernel.h> #include <linux/ctype.h> #include <asm/system.h> #include <asm/atomic.h> +#include <asm/div64.h> /* Linux uses GCC */ @@ -42,9 +43,14 @@ #undef DEBUGGER_THREADING #define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED -/* Linux ia32 can't do int64 well */ #ifndef _IA64 +/* Linux ia32 can't do int64 well */ #define ACPI_NO_INTEGER64_SUPPORT +/* And the ia32 kernel doesn't include 64-bit divide support */ +#define ACPI_DIV64(dividend, divisor) do_div(dividend, divisor) +#else +#define ACPI_DIV64(dividend, divisor) ACPI_DIVIDE(dividend, divisor) #endif + #endif /* __ACLINUX_H__ */ diff --git a/drivers/acpi/include/aclocal.h b/drivers/acpi/include/aclocal.h index 2d931387ed90..d3ea8a429a23 100644 --- a/drivers/acpi/include/aclocal.h +++ b/drivers/acpi/include/aclocal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem - * $Revision: 100 $ + * $Revision: 104 $ * *****************************************************************************/ @@ -368,6 +368,23 @@ typedef struct acpi_update_state } ACPI_UPDATE_STATE; + +/* + * Pkg state - used to traverse nested package structures + */ +typedef struct acpi_pkg_state +{ + ACPI_STATE_COMMON + union acpi_operand_obj *source_object; + union acpi_operand_obj *dest_object; + struct acpi_walk_state *walk_state; + void *this_target_obj; + u32 num_packages; + u16 index; + +} ACPI_PKG_STATE; + + /* * Control state - one per if/else and while constructs. * Allows nesting of these constructs @@ -428,6 +445,7 @@ typedef union acpi_gen_state ACPI_UPDATE_STATE update; ACPI_SCOPE_STATE scope; ACPI_PSCOPE_STATE parse_scope; + ACPI_PKG_STATE pkg; ACPI_RESULT_VALUES results; } ACPI_GENERIC_STATE; @@ -650,7 +668,6 @@ typedef struct acpi_init_walk_info typedef struct acpi_device_walk_info { - u32 flags; u16 device_count; u16 num_STA; u16 num_INI; diff --git a/drivers/acpi/include/acnamesp.h b/drivers/acpi/include/acnamesp.h index d6acb8444344..a8ef1e0d7fa1 100644 --- a/drivers/acpi/include/acnamesp.h +++ b/drivers/acpi/include/acnamesp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acnamesp.h - Namespace subcomponent prototypes and defines - * $Revision: 101 $ + * $Revision: 103 $ * *****************************************************************************/ @@ -72,7 +72,7 @@ acpi_ns_initialize_objects ( ACPI_STATUS acpi_ns_initialize_devices ( - u32 flags); + void); /* Namespace init - nsxfinit */ @@ -317,6 +317,11 @@ acpi_ns_get_node ( ACPI_NAMESPACE_NODE *in_prefix_node, ACPI_NAMESPACE_NODE **out_node); +u32 +acpi_ns_get_pathname_length ( + ACPI_NAMESPACE_NODE *node); + + /* * Object management for NTEs - nsobject */ diff --git a/drivers/acpi/include/acoutput.h b/drivers/acpi/include/acoutput.h index 5c20943cba89..6939d9e7e04b 100644 --- a/drivers/acpi/include/acoutput.h +++ b/drivers/acpi/include/acoutput.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acoutput.h -- debug output - * $Revision: 69 $ + * $Revision: 70 $ * *****************************************************************************/ @@ -96,6 +96,7 @@ #define TRACE_USER_REQUESTS 0x01000000 #define TRACE_PACKAGE 0x02000000 #define TRACE_MUTEX 0x04000000 +#define TRACE_INIT 0x08000000 #define TRACE_ALL 0x0FFFFF00 diff --git a/drivers/acpi/include/actypes.h b/drivers/acpi/include/actypes.h index 826fc89018ad..b5bbe9619fd7 100644 --- a/drivers/acpi/include/actypes.h +++ b/drivers/acpi/include/actypes.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem - * $Revision: 163 $ + * $Revision: 165 $ * *****************************************************************************/ @@ -237,8 +237,7 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_NO_EVENT_INIT 0x04 #define ACPI_NO_ACPI_ENABLE 0x08 #define ACPI_NO_DEVICE_INIT 0x10 -#define ACPI_NO_PCI_INIT 0x20 -#define ACPI_NO_OBJECT_INIT 0x40 +#define ACPI_NO_OBJECT_INIT 0x20 /* @@ -1029,22 +1028,14 @@ typedef struct _resource_tag * END: Definitions for Resource Attributes */ -/* - * Definitions for PCI Routing tables - */ -typedef struct -{ - ACPI_INTEGER address; - u32 pin; - u32 source_index; - NATIVE_CHAR source[1]; - -} PRT_ENTRY; -typedef struct _prt_tag +typedef struct pci_routing_table { u32 length; - PRT_ENTRY data; + u32 pin; + ACPI_INTEGER address; /* here for 64-bit alignment */ + u32 source_index; + NATIVE_CHAR source[4]; /* pad to 64 bits so sizeof() works in all cases */ } PCI_ROUTING_TABLE; diff --git a/drivers/acpi/interpreter/amfldio.c b/drivers/acpi/interpreter/amfldio.c index 38b08abfaf4c..f02014c7e0de 100644 --- a/drivers/acpi/interpreter/amfldio.c +++ b/drivers/acpi/interpreter/amfldio.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: amfldio - Aml Field I/O - * $Revision: 37 $ + * $Revision: 39 $ * *****************************************************************************/ @@ -416,7 +416,7 @@ acpi_aml_write_field_data_with_update_rule ( /* Check if update rule needs to be applied (not if mask is all ones) */ /* The left shift drops the bits we want to ignore. */ - if ((~mask << (sizeof(mask)*8 - bit_granularity)) != 0) { + if ((~mask << (sizeof(mask)*8 - bit_granularity)) != 0) { /* * Read the current contents of the byte/word/dword containing * the field, and merge with the new field value. diff --git a/drivers/acpi/interpreter/amstore.c b/drivers/acpi/interpreter/amstore.c index 9f350bb29d24..bb3c5c500a12 100644 --- a/drivers/acpi/interpreter/amstore.c +++ b/drivers/acpi/interpreter/amstore.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: amstore - AML Interpreter object store support - * $Revision: 121 $ + * $Revision: 123 $ * *****************************************************************************/ @@ -268,8 +268,7 @@ acpi_aml_store_object_to_index ( * If the source is a package, copy the source to the new dest */ if (ACPI_TYPE_PACKAGE == obj_desc->common.type) { - status = acpi_aml_build_copy_internal_package_object ( - val_desc, obj_desc, walk_state); + status = acpi_cm_copy_ipackage_to_ipackage (val_desc, obj_desc, walk_state); if (ACPI_FAILURE (status)) { acpi_cm_remove_reference (obj_desc); return (status); diff --git a/drivers/acpi/interpreter/amstorob.c b/drivers/acpi/interpreter/amstorob.c index 8118f08bd5e7..d71fe3eacf4f 100644 --- a/drivers/acpi/interpreter/amstorob.c +++ b/drivers/acpi/interpreter/amstorob.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: amstorob - AML Interpreter object store support, store to object - * $Revision: 22 $ + * $Revision: 23 $ * *****************************************************************************/ @@ -66,6 +66,19 @@ acpi_aml_copy_buffer_to_buffer ( length = source_desc->buffer.length; /* + * If target is a buffer of length zero, allocate a new + * buffer of the proper length + */ + if (target_desc->buffer.length == 0) { + target_desc->buffer.pointer = acpi_cm_allocate (length); + if (!target_desc->buffer.pointer) { + return (AE_NO_MEMORY); + } + + target_desc->buffer.length = length; + } + + /* * Buffer is a static allocation, * only place what will fit in the buffer. */ @@ -141,11 +154,11 @@ acpi_aml_copy_string_to_string ( } target_desc->string.pointer = acpi_cm_allocate (length + 1); - target_desc->string.length = length; - if (!target_desc->string.pointer) { return (AE_NO_MEMORY); } + target_desc->string.length = length; + MEMCPY(target_desc->string.pointer, buffer, length); } diff --git a/drivers/acpi/interpreter/amutils.c b/drivers/acpi/interpreter/amutils.c index e3456099c00d..5edf578f783c 100644 --- a/drivers/acpi/interpreter/amutils.c +++ b/drivers/acpi/interpreter/amutils.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: amutils - interpreter/scanner utilities - * $Revision: 68 $ + * $Revision: 69 $ * *****************************************************************************/ @@ -36,21 +36,6 @@ MODULE_NAME ("amutils") -typedef struct internal_search_st -{ - ACPI_OPERAND_OBJECT *dest_obj; - u32 index; - ACPI_OPERAND_OBJECT *source_obj; - -} INTERNAL_PKG_SEARCH_INFO; - - -/* Used to traverse nested packages when copying*/ -/* TBD: This must be removed! */ - -INTERNAL_PKG_SEARCH_INFO copy_level[MAX_PACKAGE_DEPTH]; - - /******************************************************************************* * * FUNCTION: Acpi_aml_enter_interpreter @@ -383,153 +368,3 @@ acpi_aml_unsigned_integer_to_string ( } -/******************************************************************************* - * - * FUNCTION: Acpi_aml_build_copy_internal_package_object - * - * PARAMETERS: *Source_obj - Pointer to the source package object - * *Dest_obj - Where the internal object is returned - * - * RETURN: Status - the status of the call - * - * DESCRIPTION: This function is called to copy an internal package object - * into another internal package object. - * - ******************************************************************************/ - -ACPI_STATUS -acpi_aml_build_copy_internal_package_object ( - ACPI_OPERAND_OBJECT *source_obj, - ACPI_OPERAND_OBJECT *dest_obj, - ACPI_WALK_STATE *walk_state) -{ - u32 current_depth = 0; - ACPI_STATUS status = AE_OK; - u32 length = 0; - u32 this_index; - u32 object_space = 0; - ACPI_OPERAND_OBJECT *this_dest_obj; - ACPI_OPERAND_OBJECT *this_source_obj; - INTERNAL_PKG_SEARCH_INFO *level_ptr; - - - /* - * Initialize the working variables - */ - - MEMSET ((void *) copy_level, 0, sizeof(copy_level)); - - copy_level[0].dest_obj = dest_obj; - copy_level[0].source_obj = source_obj; - level_ptr = ©_level[0]; - current_depth = 0; - - dest_obj->common.type = source_obj->common.type; - dest_obj->package.count = source_obj->package.count; - - - /* - * Build an array of ACPI_OBJECTS in the buffer - * and move the free space past it - */ - - dest_obj->package.elements = acpi_cm_callocate ( - (dest_obj->package.count + 1) * - sizeof (void *)); - if (!dest_obj->package.elements) { - /* Package vector allocation failure */ - - REPORT_ERROR (("Aml_build_copy_internal_package_object: Package vector allocation failure\n")); - return (AE_NO_MEMORY); - } - - dest_obj->package.next_element = dest_obj->package.elements; - - - while (1) { - this_index = level_ptr->index; - this_dest_obj = (ACPI_OPERAND_OBJECT *) level_ptr->dest_obj->package.elements[this_index]; - this_source_obj = (ACPI_OPERAND_OBJECT *) level_ptr->source_obj->package.elements[this_index]; - - if (IS_THIS_OBJECT_TYPE (this_source_obj, ACPI_TYPE_PACKAGE)) { - /* - * If this object is a package then we go one deeper - */ - if (current_depth >= MAX_PACKAGE_DEPTH-1) { - /* - * Too many nested levels of packages for us to handle - */ - return (AE_LIMIT); - } - - /* - * Build the package object - */ - this_dest_obj = acpi_cm_create_internal_object (ACPI_TYPE_PACKAGE); - level_ptr->dest_obj->package.elements[this_index] = this_dest_obj; - - - this_dest_obj->common.type = ACPI_TYPE_PACKAGE; - this_dest_obj->package.count = this_dest_obj->package.count; - - /* - * Save space for the array of objects (Package elements) - * update the buffer length counter - */ - object_space = this_dest_obj->package.count * - sizeof (ACPI_OPERAND_OBJECT); - length += object_space; - current_depth++; - level_ptr = ©_level[current_depth]; - level_ptr->dest_obj = this_dest_obj; - level_ptr->source_obj = this_source_obj; - level_ptr->index = 0; - - } /* if object is a package */ - - else { - - this_dest_obj = acpi_cm_create_internal_object ( - this_source_obj->common.type); - level_ptr->dest_obj->package.elements[this_index] = this_dest_obj; - - status = acpi_aml_store_object_to_object(this_source_obj, this_dest_obj, walk_state); - - if (ACPI_FAILURE (status)) { - /* - * Failure get out - */ - return (status); - } - - length +=object_space; - - level_ptr->index++; - while (level_ptr->index >= level_ptr->dest_obj->package.count) { - /* - * We've handled all of the objects at this level, This means - * that we have just completed a package. That package may - * have contained one or more packages itself - */ - if (current_depth == 0) { - /* - * We have handled all of the objects in the top level - * package just add the length of the package objects - * and exit - */ - return (AE_OK); - } - - /* - * Go back up a level and move the index past the just - * completed package object. - */ - current_depth--; - level_ptr = ©_level[current_depth]; - level_ptr->index++; - } - } /* else object is NOT a package */ - } /* while (1) */ -} - - diff --git a/drivers/acpi/namespace/nseval.c b/drivers/acpi/namespace/nseval.c index 6c040d22e271..155c63808252 100644 --- a/drivers/acpi/namespace/nseval.c +++ b/drivers/acpi/namespace/nseval.c @@ -2,7 +2,7 @@ * * Module Name: nseval - Object evaluation interfaces -- includes control * method lookup and execution. - * $Revision: 81 $ + * $Revision: 83 $ * ******************************************************************************/ @@ -253,8 +253,8 @@ acpi_ns_evaluate_by_handle ( node = acpi_ns_convert_handle_to_entry (handle); if (!node) { - status = AE_BAD_PARAMETER; - goto unlock_and_exit; + acpi_cm_release_mutex (ACPI_MTX_NAMESPACE); + return (AE_BAD_PARAMETER); } @@ -316,12 +316,6 @@ acpi_ns_evaluate_by_handle ( * so we just return */ return (status); - - -unlock_and_exit: - - acpi_cm_release_mutex (ACPI_MTX_NAMESPACE); - return (status); } @@ -354,14 +348,6 @@ acpi_ns_execute_control_method ( ACPI_OPERAND_OBJECT *obj_desc; - /* Verify that there is a method associated with this object */ - - obj_desc = acpi_ns_get_attached_object ((ACPI_HANDLE) method_node); - if (!obj_desc) { - return (AE_ERROR); - } - - /* * Unlock the namespace before execution. This allows namespace access * via the external Acpi* interfaces while a method is being executed. @@ -372,8 +358,16 @@ acpi_ns_execute_control_method ( acpi_cm_release_mutex (ACPI_MTX_NAMESPACE); + /* Verify that there is a method associated with this object */ + + obj_desc = acpi_ns_get_attached_object ((ACPI_HANDLE) method_node); + if (!obj_desc) { + return (AE_ERROR); + } + + /* - * Excecute the method via the interpreter + * Execute the method via the interpreter */ status = acpi_aml_execute_method (method_node, params, return_obj_desc); diff --git a/drivers/acpi/namespace/nsinit.c b/drivers/acpi/namespace/nsinit.c index 76b535205fe0..2a1daa85cc94 100644 --- a/drivers/acpi/namespace/nsinit.c +++ b/drivers/acpi/namespace/nsinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsinit - namespace initialization - * $Revision: 12 $ + * $Revision: 15 $ * *****************************************************************************/ @@ -89,13 +89,12 @@ acpi_ns_initialize_objects ( ACPI_STATUS acpi_ns_initialize_devices ( - u32 flags) + void) { ACPI_STATUS status; ACPI_DEVICE_WALK_INFO info; - info.flags = flags; info.device_count = 0; info.num_STA = 0; info.num_INI = 0; @@ -168,6 +167,7 @@ acpi_ns_init_one_object ( info->op_region_init++; status = acpi_ds_get_region_arguments (obj_desc); + break; @@ -180,6 +180,8 @@ acpi_ns_init_one_object ( info->field_init++; status = acpi_ds_get_field_unit_arguments (obj_desc); + + break; default: @@ -198,7 +200,7 @@ acpi_ns_init_one_object ( * * FUNCTION: Acpi_ns_init_one_device * - * PARAMETERS: The usual "I'm a namespace callback" stuff + * PARAMETERS: WALK_CALLBACK * * RETURN: ACPI_STATUS * @@ -221,6 +223,7 @@ acpi_ns_init_one_device ( ACPI_DEVICE_WALK_INFO *info = (ACPI_DEVICE_WALK_INFO *) context; + info->device_count++; acpi_cm_acquire_mutex (ACPI_MTX_NAMESPACE); @@ -251,6 +254,7 @@ acpi_ns_init_one_device ( return(AE_CTRL_DEPTH); } + /* * The device is present. Run _INI. */ diff --git a/drivers/acpi/namespace/nsnames.c b/drivers/acpi/namespace/nsnames.c index c2fb4916378d..50c46a9dcb46 100644 --- a/drivers/acpi/namespace/nsnames.c +++ b/drivers/acpi/namespace/nsnames.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsnames - Name manipulation and search - * $Revision: 53 $ + * $Revision: 54 $ * ******************************************************************************/ @@ -115,6 +115,46 @@ acpi_ns_get_table_pathname ( /******************************************************************************* * + * FUNCTION: Acpi_ns_get_pathname_length + * + * PARAMETERS: Node - Namespace node + * + * RETURN: Length of path, including prefix + * + * DESCRIPTION: Get the length of the pathname string for this node + * + ******************************************************************************/ + +u32 +acpi_ns_get_pathname_length ( + ACPI_NAMESPACE_NODE *node) +{ + u32 size; + ACPI_NAMESPACE_NODE *next_node; + + /* + * Compute length of pathname as 5 * number of name segments. + * Go back up the parent tree to the root + */ + for (size = 0, next_node = node; + acpi_ns_get_parent_object (next_node); + next_node = acpi_ns_get_parent_object (next_node)) + { + size += PATH_SEGMENT_LENGTH; + } + + /* Special case for size still 0 - no parent for "special" nodes */ + + if (!size) { + size = PATH_SEGMENT_LENGTH; + } + + return (size + 1); +} + + +/******************************************************************************* + * * FUNCTION: Acpi_ns_handle_to_pathname * * PARAMETERS: Target_handle - Handle of named object whose name is @@ -138,11 +178,10 @@ acpi_ns_handle_to_pathname ( { ACPI_STATUS status = AE_OK; ACPI_NAMESPACE_NODE *node; - ACPI_NAMESPACE_NODE *next_node; u32 path_length; - u32 size; u32 user_buf_size; ACPI_NAME name; + u32 size; if (!acpi_gbl_root_node || !target_handle) { @@ -159,26 +198,12 @@ acpi_ns_handle_to_pathname ( return (AE_BAD_PARAMETER); } - /* - * Compute length of pathname as 5 * number of name segments. - * Go back up the parent tree to the root - */ - for (size = 0, next_node = node; - acpi_ns_get_parent_object (next_node); - next_node = acpi_ns_get_parent_object (next_node)) - { - size += PATH_SEGMENT_LENGTH; - } - - /* Special case for size still 0 - no parent for "special" nodes */ - - if (!size) { - size = PATH_SEGMENT_LENGTH; - } /* Set return length to the required path length */ - path_length = size + 1; + path_length = acpi_ns_get_pathname_length (node); + size = path_length - 1; + user_buf_size = *buf_size; *buf_size = path_length; diff --git a/drivers/acpi/namespace/nsxfobj.c b/drivers/acpi/namespace/nsxfobj.c index 742c5da6620a..b2c3dba3a3c6 100644 --- a/drivers/acpi/namespace/nsxfobj.c +++ b/drivers/acpi/namespace/nsxfobj.c @@ -2,7 +2,7 @@ * * Module Name: nsxfobj - Public interfaces to the ACPI subsystem * ACPI Object oriented interfaces - * $Revision: 78 $ + * $Revision: 80 $ * ******************************************************************************/ @@ -117,9 +117,8 @@ acpi_evaluate_object ( * internal object */ for (i = 0; i < count; i++) { - status = - acpi_cm_build_internal_object (¶m_objects->pointer[i], - param_ptr[i]); + status = acpi_cm_copy_eobject_to_iobject (¶m_objects->pointer[i], + param_ptr[i]); if (ACPI_FAILURE (status)) { acpi_cm_delete_internal_object_list (param_ptr); @@ -236,7 +235,7 @@ acpi_evaluate_object ( /* * We have enough space for the object, build it */ - status = acpi_cm_build_external_object (return_obj, + status = acpi_cm_copy_iobject_to_eobject (return_obj, return_buffer); return_buffer->length = buffer_space_needed; } @@ -580,13 +579,13 @@ acpi_ns_get_device_callback ( acpi_cm_acquire_mutex (ACPI_MTX_NAMESPACE); node = acpi_ns_convert_handle_to_entry (obj_handle); + + acpi_cm_release_mutex (ACPI_MTX_NAMESPACE); + if (!node) { - acpi_cm_release_mutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } - acpi_cm_release_mutex (ACPI_MTX_NAMESPACE); - /* * Run _STA to determine if device is present */ diff --git a/drivers/acpi/resources/rscalc.c b/drivers/acpi/resources/rscalc.c index 86ff91be87c5..bfceeac8baf9 100644 --- a/drivers/acpi/resources/rscalc.c +++ b/drivers/acpi/resources/rscalc.c @@ -2,7 +2,7 @@ * * Module Name: rscalc - Acpi_rs_calculate_byte_stream_length * Acpi_rs_calculate_list_length - * $Revision: 18 $ + * $Revision: 21 $ * ******************************************************************************/ @@ -27,6 +27,8 @@ #include "acpi.h" #include "acresrc.h" +#include "amlcode.h" +#include "acnamesp.h" #define _COMPONENT RESOURCE_MANAGER MODULE_NAME ("rscalc") @@ -704,6 +706,7 @@ acpi_rs_calculate_list_length ( */ bytes_consumed = 2; structure_size = RESOURCE_LENGTH; + byte_stream_buffer_length = bytes_parsed; break; @@ -810,7 +813,10 @@ acpi_rs_calculate_pci_routing_table_length ( name_found = FALSE; for (table_index = 0; table_index < 4 && !name_found; table_index++) { - if (ACPI_TYPE_STRING == (*sub_object_list)->common.type) { + if ((ACPI_TYPE_STRING == (*sub_object_list)->common.type) || + ((INTERNAL_TYPE_REFERENCE == (*sub_object_list)->common.type) && + ((*sub_object_list)->reference.op_code == AML_NAMEPATH_OP))) + { name_found = TRUE; } @@ -822,17 +828,22 @@ acpi_rs_calculate_pci_routing_table_length ( } } - temp_size_needed += (sizeof (PCI_ROUTING_TABLE) - 1); + temp_size_needed += (sizeof (PCI_ROUTING_TABLE) - 4); /* * Was a String type found? */ if (TRUE == name_found) { - /* - * The length String.Length field includes the - * terminating NULL - */ - temp_size_needed += (*sub_object_list)->string.length; + if (ACPI_TYPE_STRING == (*sub_object_list)->common.type) { + /* + * The length String.Length field includes the + * terminating NULL + */ + temp_size_needed += (*sub_object_list)->string.length; + } + else { + temp_size_needed += acpi_ns_get_pathname_length ((*sub_object_list)->reference.node); + } } else { @@ -855,7 +866,7 @@ acpi_rs_calculate_pci_routing_table_length ( } - *buffer_size_needed = temp_size_needed + sizeof (PCI_ROUTING_TABLE); + *buffer_size_needed = temp_size_needed; return (AE_OK); } diff --git a/drivers/acpi/resources/rscreate.c b/drivers/acpi/resources/rscreate.c index f221a41dc290..234684edb092 100644 --- a/drivers/acpi/resources/rscreate.c +++ b/drivers/acpi/resources/rscreate.c @@ -3,7 +3,7 @@ * Module Name: rscreate - Acpi_rs_create_resource_list * Acpi_rs_create_pci_routing_table * Acpi_rs_create_byte_stream - * $Revision: 24 $ + * $Revision: 25 $ * ******************************************************************************/ @@ -28,6 +28,8 @@ #include "acpi.h" #include "acresrc.h" +#include "amlcode.h" +#include "acnamesp.h" #define _COMPONENT RESOURCE_MANAGER MODULE_NAME ("rscreate") @@ -157,6 +159,7 @@ acpi_rs_create_pci_routing_table ( u32 number_of_elements = 0; u32 index = 0; PCI_ROUTING_TABLE *user_prt = NULL; + ACPI_NAMESPACE_NODE *node; ACPI_STATUS status; @@ -203,10 +206,10 @@ acpi_rs_create_pci_routing_table ( /* * Fill in the Length field with the information we * have at this point. - * The minus one is to subtract the size of the - * u8 Source[1] member because it is added below. + * The minus four is to subtract the size of the + * u8 Source[4] member because it is added below. */ - user_prt->length = (sizeof (PCI_ROUTING_TABLE) - 1); + user_prt->length = (sizeof (PCI_ROUTING_TABLE) -4); /* * Dereference the sub-package @@ -221,11 +224,10 @@ acpi_rs_create_pci_routing_table ( sub_object_list = package_element->package.elements; /* - * Dereference the Address + * 1) First subobject: Dereference the Address */ if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) { - user_prt->data.address = - (*sub_object_list)->integer.value; + user_prt->address = (*sub_object_list)->integer.value; } else { @@ -233,12 +235,12 @@ acpi_rs_create_pci_routing_table ( } /* - * Dereference the Pin + * 2) Second subobject: Dereference the Pin */ sub_object_list++; if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) { - user_prt->data.pin = + user_prt->pin = (u32) (*sub_object_list)->integer.value; } @@ -247,37 +249,57 @@ acpi_rs_create_pci_routing_table ( } /* - * Dereference the Source Name + * 3) Third subobject: Dereference the Source Name */ sub_object_list++; - if (ACPI_TYPE_STRING == (*sub_object_list)->common.type) { - STRCPY (user_prt->data.source, + switch ((*sub_object_list)->common.type) + { + case INTERNAL_TYPE_REFERENCE: + if ((*sub_object_list)->reference.op_code != AML_NAMEPATH_OP) { + return (AE_BAD_DATA); + } + + node = (*sub_object_list)->reference.node; + + /* TBD: use *remaining* length of the buffer! */ + + status = acpi_ns_handle_to_pathname ((ACPI_HANDLE *) node, + output_buffer_length, user_prt->source); + + user_prt->length += STRLEN (user_prt->source) + 1; /* include null terminator */ + break; + + + case ACPI_TYPE_STRING: + + STRCPY (user_prt->source, (*sub_object_list)->string.pointer); /* * Add to the Length field the length of the string */ user_prt->length += (*sub_object_list)->string.length; - } + break; - else { + + case ACPI_TYPE_INTEGER: /* * If this is a number, then the Source Name * is NULL, since the entire buffer was zeroed * out, we can leave this alone. */ - if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) { - /* - * Add to the Length field the length of - * the u32 NULL - */ - user_prt->length += sizeof (u32); - } + /* + * Add to the Length field the length of + * the u32 NULL + */ + user_prt->length += sizeof (u32); + break; - else { - return (AE_BAD_DATA); - } + + default: + return (AE_BAD_DATA); + break; } /* Now align the current length */ @@ -285,12 +307,12 @@ acpi_rs_create_pci_routing_table ( user_prt->length = ROUND_UP_TO_64_bITS (user_prt->length); /* - * Dereference the Source Index + * 4) Fourth subobject: Dereference the Source Index */ sub_object_list++; if (ACPI_TYPE_INTEGER == (*sub_object_list)->common.type) { - user_prt->data.source_index = + user_prt->source_index = (u32) (*sub_object_list)->integer.value; } diff --git a/drivers/acpi/resources/rsdump.c b/drivers/acpi/resources/rsdump.c index 03d2da6f2150..367648afef02 100644 --- a/drivers/acpi/resources/rsdump.c +++ b/drivers/acpi/resources/rsdump.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsdump - Functions do dump out the resource structures. - * $Revision: 15 $ + * $Revision: 16 $ * ******************************************************************************/ @@ -910,24 +910,24 @@ acpi_rs_dump_irq_list ( if (acpi_dbg_level & TRACE_RESOURCES && _COMPONENT & acpi_dbg_layer) { - prt_element = (PCI_ROUTING_TABLE *)buffer; + prt_element = (PCI_ROUTING_TABLE *) buffer; while (!done) { acpi_os_printf ("\t_pCI IRQ Routing Table structure %X.\n", count++); acpi_os_printf ("\t\t_address: %X\n", - prt_element->data.address); + prt_element->address); - acpi_os_printf ("\t\t_pin: %X\n", prt_element->data.pin); + acpi_os_printf ("\t\t_pin: %X\n", prt_element->pin); - acpi_os_printf ("\t\t_source: %s\n", prt_element->data.source); + acpi_os_printf ("\t\t_source: %s\n", prt_element->source); acpi_os_printf ("\t\t_source_index: %X\n", - prt_element->data.source_index); + prt_element->source_index); buffer += prt_element->length; - prt_element = (PCI_ROUTING_TABLE *)buffer; + prt_element = (PCI_ROUTING_TABLE *) buffer; if(0 == prt_element->length) { done = TRUE; diff --git a/drivers/acpi/resources/rslist.c b/drivers/acpi/resources/rslist.c index de47563d0f8e..048db65a4644 100644 --- a/drivers/acpi/resources/rslist.c +++ b/drivers/acpi/resources/rslist.c @@ -2,7 +2,7 @@ * * Module Name: rslist - Acpi_rs_byte_stream_to_list * Acpi_list_to_byte_stream - * $Revision: 10 $ + * $Revision: 11 $ * ******************************************************************************/ @@ -302,9 +302,7 @@ acpi_rs_byte_stream_to_list ( /* * Check the reason for exiting the while loop */ - if (!(byte_stream_buffer_length == bytes_parsed) || - (TRUE != end_tag_processed)) - { + if (TRUE != end_tag_processed) { return (AE_AML_ERROR); } diff --git a/drivers/acpi/tables/tbconvrt.c b/drivers/acpi/tables/tbconvrt.c index 76d7fff15c47..fd57f3eb7273 100644 --- a/drivers/acpi/tables/tbconvrt.c +++ b/drivers/acpi/tables/tbconvrt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbconvrt - ACPI Table conversion utilities - * $Revision: 18 $ + * $Revision: 19 $ * *****************************************************************************/ diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index 8ff6e5545611..cf24ef71e68a 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c @@ -28,7 +28,7 @@ #include <linux/version.h> #include <linux/config.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/capability.h> #include <linux/sched.h> diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index d0aac4c7d15a..fa5eae623488 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -34,7 +34,7 @@ #include <linux/ioport.h> #include <linux/locks.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/proc_fs.h> #include <linux/reboot.h> #include <linux/spinlock.h> diff --git a/drivers/block/acsi.c b/drivers/block/acsi.c index fd3101f7f802..d9a09e3a274b 100644 --- a/drivers/block/acsi.c +++ b/drivers/block/acsi.c @@ -59,7 +59,7 @@ #include <linux/mm.h> #include <linux/major.h> #include <linux/blk.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> #include <scsi/scsi.h> /* for SCSI_IOCTL_GET_IDLUN */ typedef void Scsi_Device; /* hack to avoid including scsi.h */ diff --git a/drivers/block/acsi_slm.c b/drivers/block/acsi_slm.c index 35bab96feb18..6dadacb4d45e 100644 --- a/drivers/block/acsi_slm.c +++ b/drivers/block/acsi_slm.c @@ -64,7 +64,7 @@ not be guaranteed. There are several ways to assure this: #include <linux/interrupt.h> #include <linux/time.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/devfs_fs_kernel.h> #include <linux/smp_lock.h> diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c index 9f0d031a877f..4d7c512f4d71 100644 --- a/drivers/block/ataflop.c +++ b/drivers/block/ataflop.c @@ -74,7 +74,7 @@ #include <linux/types.h> #include <linux/delay.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <asm/setup.h> diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 4dde72c33133..c02092272523 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -26,7 +26,7 @@ #include <linux/types.h> #include <linux/pci.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/major.h> #include <linux/fs.h> diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index 427236c30718..b190e8ae7737 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c @@ -28,7 +28,7 @@ #include <linux/types.h> #include <linux/pci.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/major.h> #include <linux/fs.h> diff --git a/drivers/block/cpqarray.h b/drivers/block/cpqarray.h index de569c7de2d0..352986d04634 100644 --- a/drivers/block/cpqarray.h +++ b/drivers/block/cpqarray.h @@ -28,7 +28,7 @@ #ifdef __KERNEL__ #include <linux/blkdev.h> #include <linux/locks.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/proc_fs.h> #include <linux/timer.h> #endif diff --git a/drivers/block/elevator.c b/drivers/block/elevator.c index 9917ad055a6d..3df8aab7f497 100644 --- a/drivers/block/elevator.c +++ b/drivers/block/elevator.c @@ -46,6 +46,8 @@ int elevator_linus_merge(request_queue_t *q, struct request **req, break; } + if (!*req && BHRQ_IN_ORDER(bh, __rq)) + *req = __rq; if (__rq->sem) continue; if (__rq->cmd != rw) @@ -65,8 +67,7 @@ int elevator_linus_merge(request_queue_t *q, struct request **req, __rq->elevator_sequence -= count; *req = __rq; break; - } else if (!*req && BHRQ_IN_ORDER(bh, __rq)) - *req = __rq; + } } return ret; diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 613841745fbc..4e569fa9f90b 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -152,7 +152,7 @@ static int print_unex=1; #include <linux/hdreg.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/string.h> #include <linux/fcntl.h> diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index 5e8ba90530f2..dfcfbab096cf 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@ -576,8 +576,6 @@ inline void drive_stat_acct (kdev_t dev, int rw, static inline void add_request(request_queue_t * q, struct request * req, struct list_head *insert_here) { - int major; - drive_stat_acct(req->rq_dev, req->cmd, req->nr_sectors, 1); if (!q->plugged && q->head_active && insert_here == &q->queue_head) { diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 969147a35168..956d460427bd 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -75,7 +75,7 @@ #define TIMEOUT_VALUE (6 * HZ) #include <linux/blk.h> -#include <linux/malloc.h> +#include <linux/slab.h> static int max_loop = 8; static struct loop_device *loop_dev; static int *loop_sizes; diff --git a/drivers/block/paride/pg.c b/drivers/block/paride/pg.c index 914bfa23cfb3..916cfb7470fc 100644 --- a/drivers/block/paride/pg.c +++ b/drivers/block/paride/pg.c @@ -167,7 +167,7 @@ static int pg_drive_count; #include <linux/devfs_fs_kernel.h> #include <linux/kernel.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mtio.h> #include <linux/pg.h> #include <linux/wait.h> diff --git a/drivers/block/paride/pt.c b/drivers/block/paride/pt.c index c5dbb73ad64a..870c6bc18325 100644 --- a/drivers/block/paride/pt.c +++ b/drivers/block/paride/pt.c @@ -146,7 +146,7 @@ static int pt_drive_count; #include <linux/devfs_fs_kernel.h> #include <linux/kernel.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mtio.h> #include <linux/wait.h> #include <linux/smp_lock.h> diff --git a/drivers/block/rd.c b/drivers/block/rd.c index 1799ccef536e..503913bf3228 100644 --- a/drivers/block/rd.c +++ b/drivers/block/rd.c @@ -53,7 +53,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/mman.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioctl.h> #include <linux/fd.h> #include <linux/module.h> diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index 5aedc25439e8..c6ef9788489b 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c @@ -28,7 +28,7 @@ #define MAJOR_NR Z2RAM_MAJOR #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/blk.h> #include <linux/init.h> diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c index cafe72afd32c..af5834ca91cd 100644 --- a/drivers/cdrom/cdrom.c +++ b/drivers/cdrom/cdrom.c @@ -259,7 +259,7 @@ #include <linux/errno.h> #include <linux/kernel.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/cdrom.h> #include <linux/sysctl.h> #include <linux/proc_fs.h> diff --git a/drivers/cdrom/cdu31a.c b/drivers/cdrom/cdu31a.c index 8b969818b5a1..5f48b5099e78 100644 --- a/drivers/cdrom/cdu31a.c +++ b/drivers/cdrom/cdu31a.c @@ -164,7 +164,7 @@ #include <linux/ioport.h> #include <linux/devfs_fs_kernel.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/interrupt.h> diff --git a/drivers/cdrom/cm206.c b/drivers/cdrom/cm206.c index c0db3056078a..ab8963fbb332 100644 --- a/drivers/cdrom/cm206.c +++ b/drivers/cdrom/cm206.c @@ -190,7 +190,7 @@ History: #include <linux/devfs_fs_kernel.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> /* #include <linux/ucdrom.h> */ diff --git a/drivers/cdrom/gscd.c b/drivers/cdrom/gscd.c index 0e8940117499..af8e2e33d7b7 100644 --- a/drivers/cdrom/gscd.c +++ b/drivers/cdrom/gscd.c @@ -50,7 +50,7 @@ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <linux/signal.h> #include <linux/sched.h> diff --git a/drivers/cdrom/mcdx.c b/drivers/cdrom/mcdx.c index 160261406d43..ad36f0135b7d 100644 --- a/drivers/cdrom/mcdx.c +++ b/drivers/cdrom/mcdx.c @@ -66,7 +66,7 @@ static const char *mcdx_c_version #include <linux/cdrom.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <asm/io.h> #include <asm/uaccess.h> diff --git a/drivers/cdrom/sonycd535.c b/drivers/cdrom/sonycd535.c index 15bcacd85d9a..a66fb5651284 100644 --- a/drivers/cdrom/sonycd535.c +++ b/drivers/cdrom/sonycd535.c @@ -122,7 +122,7 @@ #include <linux/hdreg.h> #include <linux/genhd.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/devfs_fs_kernel.h> diff --git a/drivers/char/acquirewdt.c b/drivers/char/acquirewdt.c index 272296b69479..a58e43e86f7f 100644 --- a/drivers/char/acquirewdt.c +++ b/drivers/char/acquirewdt.c @@ -28,7 +28,7 @@ #include <linux/sched.h> #include <linux/miscdevice.h> #include <linux/watchdog.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <asm/io.h> diff --git a/drivers/char/agp/agpgart_be.c b/drivers/char/agp/agpgart_be.c index ccd53dacce7b..399c6f118cde 100644 --- a/drivers/char/agp/agpgart_be.c +++ b/drivers/char/agp/agpgart_be.c @@ -32,7 +32,7 @@ #include <linux/mm.h> #include <linux/string.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/pci.h> #include <linux/init.h> diff --git a/drivers/char/agp/agpgart_fe.c b/drivers/char/agp/agpgart_fe.c index d16c62a22d8e..af15aa8a7c6a 100644 --- a/drivers/char/agp/agpgart_fe.c +++ b/drivers/char/agp/agpgart_fe.c @@ -33,7 +33,7 @@ #include <linux/mm.h> #include <linux/string.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/pci.h> #include <linux/init.h> diff --git a/drivers/char/amiserial.c b/drivers/char/amiserial.c index fdcfe7805d4f..0504e0d141e9 100644 --- a/drivers/char/amiserial.c +++ b/drivers/char/amiserial.c @@ -85,7 +85,7 @@ static char *serial_version = "4.30"; #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> diff --git a/drivers/char/applicom.c b/drivers/char/applicom.c index 63f26cc0fdfb..2b3f282d00df 100644 --- a/drivers/char/applicom.c +++ b/drivers/char/applicom.c @@ -22,7 +22,7 @@ #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/errno.h> #include <asm/io.h> #include <asm/uaccess.h> diff --git a/drivers/char/busmouse.c b/drivers/char/busmouse.c index 9a983bb3e3bf..fb016439c73f 100644 --- a/drivers/char/busmouse.c +++ b/drivers/char/busmouse.c @@ -12,7 +12,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <linux/mm.h> #include <linux/poll.h> diff --git a/drivers/char/console.c b/drivers/char/console.c index 0285eab79d24..2697cf5a6f36 100644 --- a/drivers/char/console.c +++ b/drivers/char/console.c @@ -79,7 +79,7 @@ #include <linux/string.h> #include <linux/errno.h> #include <linux/kd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/major.h> #include <linux/mm.h> #include <linux/console.h> diff --git a/drivers/char/consolemap.c b/drivers/char/consolemap.c index 272074936ed3..bf55df922e45 100644 --- a/drivers/char/consolemap.c +++ b/drivers/char/consolemap.c @@ -14,8 +14,9 @@ #include <linux/kd.h> #include <linux/errno.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> +#include <linux/tty.h> #include <asm/uaccess.h> #include <linux/consolemap.h> #include <linux/console_struct.h> diff --git a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c index 535566b6352d..7de536f7708b 100644 --- a/drivers/char/dsp56k.c +++ b/drivers/char/dsp56k.c @@ -25,7 +25,7 @@ #include <linux/module.h> #include <linux/version.h> -#include <linux/malloc.h> /* for kmalloc() and kfree() */ +#include <linux/slab.h> /* for kmalloc() and kfree() */ #include <linux/sched.h> /* for struct wait_queue etc */ #include <linux/major.h> #include <linux/types.h> diff --git a/drivers/char/dz.c b/drivers/char/dz.c index dd2b50d8cc8b..ff7627098d51 100644 --- a/drivers/char/dz.c +++ b/drivers/char/dz.c @@ -33,7 +33,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/major.h> #include <linux/param.h> diff --git a/drivers/char/esp.c b/drivers/char/esp.c index 6e575c3dd4b0..f519312205b8 100644 --- a/drivers/char/esp.c +++ b/drivers/char/esp.c @@ -61,7 +61,7 @@ #include <asm/bitops.h> #include <asm/dma.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/uaccess.h> #include <linux/hayesesp.h> diff --git a/drivers/char/ftape/lowlevel/ftape-buffer.c b/drivers/char/ftape/lowlevel/ftape-buffer.c index 02fe29dac1cf..a18b8681768f 100644 --- a/drivers/char/ftape/lowlevel/ftape-buffer.c +++ b/drivers/char/ftape/lowlevel/ftape-buffer.c @@ -25,7 +25,7 @@ */ #include <asm/segment.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/wrapper.h> diff --git a/drivers/char/ftape/zftape/zftape-buffers.c b/drivers/char/ftape/zftape/zftape-buffers.c index f3dace343a9e..58197e42918c 100644 --- a/drivers/char/ftape/zftape/zftape-buffers.c +++ b/drivers/char/ftape/zftape/zftape-buffers.c @@ -26,7 +26,7 @@ #include <linux/errno.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/segment.h> #include <linux/zftape.h> diff --git a/drivers/char/ftape/zftape/zftape-init.c b/drivers/char/ftape/zftape/zftape-init.c index a57e3abc1967..1f8e4edaab07 100644 --- a/drivers/char/ftape/zftape/zftape-init.c +++ b/drivers/char/ftape/zftape/zftape-init.c @@ -29,7 +29,7 @@ #include <linux/kernel.h> #include <linux/signal.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #ifdef CONFIG_KMOD #include <linux/kmod.h> #endif diff --git a/drivers/char/ftape/zftape/zftape-vtbl.c b/drivers/char/ftape/zftape/zftape-vtbl.c index e4804ea2edc5..aa64ca7d1385 100644 --- a/drivers/char/ftape/zftape/zftape-vtbl.c +++ b/drivers/char/ftape/zftape/zftape-vtbl.c @@ -30,7 +30,7 @@ #include <linux/errno.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/segment.h> #include <linux/zftape.h> diff --git a/drivers/char/ip2main.c b/drivers/char/ip2main.c index a5e3adca6f06..7cc4acb0067a 100644 --- a/drivers/char/ip2main.c +++ b/drivers/char/ip2main.c @@ -75,7 +75,7 @@ #include <linux/interrupt.h> #include <linux/pci.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/major.h> #include <linux/wait.h> diff --git a/drivers/char/istallion.c b/drivers/char/istallion.c index bd6caa775cfd..ea4686691ec5 100644 --- a/drivers/char/istallion.c +++ b/drivers/char/istallion.c @@ -28,8 +28,9 @@ #include <linux/config.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> +#include <linux/tty.h> #include <linux/tty_flip.h> #include <linux/serial.h> #include <linux/cdk.h> diff --git a/drivers/char/joystick/a3d.c b/drivers/char/joystick/a3d.c index bd17f8de2c57..09642a9e7289 100644 --- a/drivers/char/joystick/a3d.c +++ b/drivers/char/joystick/a3d.c @@ -32,7 +32,7 @@ #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/gameport.h> #include <linux/input.h> diff --git a/drivers/char/joystick/adi.c b/drivers/char/joystick/adi.c index a2f68d74eb05..5bdf269fc8b6 100644 --- a/drivers/char/joystick/adi.c +++ b/drivers/char/joystick/adi.c @@ -34,7 +34,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/gameport.h> #include <linux/init.h> diff --git a/drivers/char/joystick/analog.c b/drivers/char/joystick/analog.c index dbd46fb7e774..a9f5a0b0dc6c 100644 --- a/drivers/char/joystick/analog.c +++ b/drivers/char/joystick/analog.c @@ -34,7 +34,7 @@ #include <linux/delay.h> #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/bitops.h> #include <linux/init.h> #include <linux/input.h> diff --git a/drivers/char/joystick/cobra.c b/drivers/char/joystick/cobra.c index f059a2ff6c42..d71ac96ac368 100644 --- a/drivers/char/joystick/cobra.c +++ b/drivers/char/joystick/cobra.c @@ -32,7 +32,7 @@ #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/gameport.h> #include <linux/input.h> diff --git a/drivers/char/joystick/gameport.c b/drivers/char/joystick/gameport.c index 15ef908a6727..d3cb6422e659 100644 --- a/drivers/char/joystick/gameport.c +++ b/drivers/char/joystick/gameport.c @@ -35,7 +35,7 @@ #include <linux/ioport.h> #include <linux/init.h> #include <linux/gameport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/isapnp.h> #include <linux/stddef.h> #include <linux/delay.h> diff --git a/drivers/char/joystick/gf2k.c b/drivers/char/joystick/gf2k.c index cad8be16bd11..5ec0e7f6db64 100644 --- a/drivers/char/joystick/gf2k.c +++ b/drivers/char/joystick/gf2k.c @@ -32,7 +32,7 @@ #include <linux/delay.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/input.h> diff --git a/drivers/char/joystick/grip.c b/drivers/char/joystick/grip.c index 4cedd7892ac0..3d9742b33da4 100644 --- a/drivers/char/joystick/grip.c +++ b/drivers/char/joystick/grip.c @@ -33,7 +33,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/gameport.h> #include <linux/input.h> diff --git a/drivers/char/joystick/iforce.c b/drivers/char/joystick/iforce.c index af8adaed17dc..124edb321d11 100644 --- a/drivers/char/joystick/iforce.c +++ b/drivers/char/joystick/iforce.c @@ -29,7 +29,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/module.h> #include <linux/init.h> diff --git a/drivers/char/joystick/interact.c b/drivers/char/joystick/interact.c index 7104e5d49e8d..267122804445 100644 --- a/drivers/char/joystick/interact.c +++ b/drivers/char/joystick/interact.c @@ -34,7 +34,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/delay.h> #include <linux/init.h> diff --git a/drivers/char/joystick/lightning.c b/drivers/char/joystick/lightning.c index 69dfd11121cb..c05c90021626 100644 --- a/drivers/char/joystick/lightning.c +++ b/drivers/char/joystick/lightning.c @@ -38,7 +38,7 @@ #include <linux/module.h> #include <linux/init.h> #include <linux/gameport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #define L4_PORT 0x201 #define L4_SELECT_ANALOG 0xa4 diff --git a/drivers/char/joystick/magellan.c b/drivers/char/joystick/magellan.c index e8c77f48e14b..2867a3a1855a 100644 --- a/drivers/char/joystick/magellan.c +++ b/drivers/char/joystick/magellan.c @@ -32,7 +32,7 @@ #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/serio.h> #include <linux/init.h> diff --git a/drivers/char/joystick/ns558.c b/drivers/char/joystick/ns558.c index 36c5d9f9e22a..a4b26a0830fd 100644 --- a/drivers/char/joystick/ns558.c +++ b/drivers/char/joystick/ns558.c @@ -38,7 +38,7 @@ #include <linux/config.h> #include <linux/init.h> #include <linux/gameport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/isapnp.h> MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>"); diff --git a/drivers/char/joystick/serport.c b/drivers/char/joystick/serport.c index 453e674d7032..14c6537aa43a 100644 --- a/drivers/char/joystick/serport.c +++ b/drivers/char/joystick/serport.c @@ -33,7 +33,7 @@ #include <asm/uaccess.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/serio.h> diff --git a/drivers/char/joystick/sidewinder.c b/drivers/char/joystick/sidewinder.c index ae31265cbbe1..1ba4123053e8 100644 --- a/drivers/char/joystick/sidewinder.c +++ b/drivers/char/joystick/sidewinder.c @@ -33,7 +33,7 @@ #include <linux/delay.h> #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/input.h> #include <linux/gameport.h> diff --git a/drivers/char/joystick/spaceball.c b/drivers/char/joystick/spaceball.c index 8e2936f73e34..e6aa5f094d1d 100644 --- a/drivers/char/joystick/spaceball.c +++ b/drivers/char/joystick/spaceball.c @@ -35,7 +35,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/input.h> diff --git a/drivers/char/joystick/spaceorb.c b/drivers/char/joystick/spaceorb.c index 866e1ba50a52..4c595fdce973 100644 --- a/drivers/char/joystick/spaceorb.c +++ b/drivers/char/joystick/spaceorb.c @@ -34,7 +34,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/input.h> diff --git a/drivers/char/joystick/tmdc.c b/drivers/char/joystick/tmdc.c index f356f7dd5c2c..611ae962a92c 100644 --- a/drivers/char/joystick/tmdc.c +++ b/drivers/char/joystick/tmdc.c @@ -36,7 +36,7 @@ #include <linux/delay.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/gameport.h> diff --git a/drivers/char/joystick/warrior.c b/drivers/char/joystick/warrior.c index 7000b8560b92..d84f2950e9f3 100644 --- a/drivers/char/joystick/warrior.c +++ b/drivers/char/joystick/warrior.c @@ -32,7 +32,7 @@ #include <linux/kernel.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/serio.h> #include <linux/init.h> diff --git a/drivers/char/lp.c b/drivers/char/lp.c index 5a590422f84a..1c8f7663027e 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c @@ -121,7 +121,7 @@ #include <linux/sched.h> #include <linux/smp_lock.h> #include <linux/devfs_fs_kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/delay.h> #include <linux/poll.h> diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 71d833b36528..7aaa88f23c1f 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -13,12 +13,13 @@ #include <linux/miscdevice.h> #include <linux/tpqic02.h> #include <linux/ftape.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/mman.h> #include <linux/random.h> #include <linux/init.h> #include <linux/raw.h> +#include <linux/tty.h> #include <linux/capability.h> #include <asm/uaccess.h> diff --git a/drivers/char/misc.c b/drivers/char/misc.c index 465fed249e36..1da352fc4d6f 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -41,7 +41,7 @@ #include <linux/miscdevice.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/proc_fs.h> #include <linux/devfs_fs_kernel.h> #include <linux/stat.h> diff --git a/drivers/char/n_hdlc.c b/drivers/char/n_hdlc.c index 3427c1421e31..130d53301f53 100644 --- a/drivers/char/n_hdlc.c +++ b/drivers/char/n_hdlc.c @@ -96,7 +96,7 @@ #include <linux/poll.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/tty.h> #include <linux/errno.h> #include <linux/string.h> /* used in new tty drivers */ diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c index 8a825753a333..215988d59622 100644 --- a/drivers/char/n_r3964.c +++ b/drivers/char/n_r3964.c @@ -51,7 +51,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/tty.h> #include <linux/errno.h> #include <linux/string.h> /* used in new tty drivers */ diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c index c2ae319af99d..66124475aa80 100644 --- a/drivers/char/n_tty.c +++ b/drivers/char/n_tty.c @@ -38,7 +38,7 @@ #include <linux/kd.h> #include <linux/mm.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/poll.h> #include <asm/uaccess.h> diff --git a/drivers/char/nvram.c b/drivers/char/nvram.c index bd7efe8461fb..1086559df069 100644 --- a/drivers/char/nvram.c +++ b/drivers/char/nvram.c @@ -94,7 +94,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <linux/mc146818rtc.h> @@ -481,7 +481,8 @@ static void pc_set_checksum( void ) #ifdef CONFIG_PROC_FS static char *floppy_types[] = { - "none", "5.25'' 360k", "5.25'' 1.2M", "3.5'' 720k", "3.5'' 1.44M", "3.5'' 2.88M" + "none", "5.25'' 360k", "5.25'' 1.2M", "3.5'' 720k", "3.5'' 1.44M", + "3.5'' 2.88M", "3.5'' 2.88M" }; static char *gfx_types[] = { diff --git a/drivers/char/pc_keyb.c b/drivers/char/pc_keyb.c index 4a77583256a8..35e4e132831d 100644 --- a/drivers/char/pc_keyb.c +++ b/drivers/char/pc_keyb.c @@ -29,7 +29,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/kbd_kern.h> #include <linux/smp_lock.h> diff --git a/drivers/char/pcmcia/serial_cb.c b/drivers/char/pcmcia/serial_cb.c index f959b9c40153..2efbc2459166 100644 --- a/drivers/char/pcmcia/serial_cb.c +++ b/drivers/char/pcmcia/serial_cb.c @@ -24,7 +24,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/tty.h> #include <linux/serial.h> diff --git a/drivers/char/pcmcia/serial_cs.c b/drivers/char/pcmcia/serial_cs.c index af25aa9e9caa..68597aa9a161 100644 --- a/drivers/char/pcmcia/serial_cs.c +++ b/drivers/char/pcmcia/serial_cs.c @@ -36,7 +36,7 @@ #include <linux/init.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/tty.h> diff --git a/drivers/char/pcwd.c b/drivers/char/pcwd.c index 2b4a71546c9f..9a593a7baedc 100644 --- a/drivers/char/pcwd.c +++ b/drivers/char/pcwd.c @@ -53,7 +53,7 @@ #include <linux/kernel.h> #include <linux/wait.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/delay.h> #include <linux/miscdevice.h> diff --git a/drivers/char/pcxx.c b/drivers/char/pcxx.c index 19c5f8416e0e..794f6bebd485 100644 --- a/drivers/char/pcxx.c +++ b/drivers/char/pcxx.c @@ -63,7 +63,7 @@ #include <linux/delay.h> #include <linux/serial.h> #include <linux/tty_driver.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/version.h> diff --git a/drivers/char/q40_keyb.c b/drivers/char/q40_keyb.c index 22c981b79aa1..02fc307664a0 100644 --- a/drivers/char/q40_keyb.c +++ b/drivers/char/q40_keyb.c @@ -21,7 +21,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/keyboard.h> #include <asm/bitops.h> diff --git a/drivers/char/qpmouse.c b/drivers/char/qpmouse.c index 922f56a0c4d0..d3e606874e49 100644 --- a/drivers/char/qpmouse.c +++ b/drivers/char/qpmouse.c @@ -31,7 +31,7 @@ #include <linux/fcntl.h> #include <linux/errno.h> #include <linux/timer.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/miscdevice.h> #include <linux/random.h> #include <linux/poll.h> diff --git a/drivers/char/random.c b/drivers/char/random.c index bbd5aff21e3a..df2d53f2b02a 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -240,7 +240,7 @@ #include <linux/major.h> #include <linux/string.h> #include <linux/fcntl.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/random.h> #include <linux/poll.h> #include <linux/init.h> diff --git a/drivers/char/rio/rio_linux.c b/drivers/char/rio/rio_linux.c index 6b0e3d298adc..5b1ae925c826 100644 --- a/drivers/char/rio/rio_linux.c +++ b/drivers/char/rio/rio_linux.c @@ -56,7 +56,7 @@ #include <linux/tqueue.h> #include <linux/version.h> #include <linux/pci.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/miscdevice.h> #include <linux/compatmac.h> diff --git a/drivers/char/rio/rioboot.c b/drivers/char/rio/rioboot.c index d5ab5ba02f6c..c1e2ca81899f 100644 --- a/drivers/char/rio/rioboot.c +++ b/drivers/char/rio/rioboot.c @@ -36,7 +36,7 @@ static char *_rioboot_c_sccs_ = "@(#)rioboot.c 1.3"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <asm/io.h> #include <asm/system.h> diff --git a/drivers/char/rio/riocmd.c b/drivers/char/rio/riocmd.c index 3a330a07c51e..f651ed9e8ac5 100644 --- a/drivers/char/rio/riocmd.c +++ b/drivers/char/rio/riocmd.c @@ -36,8 +36,9 @@ static char *_riocmd_c_sccs_ = "@(#)riocmd.c 1.2"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> +#include <linux/tty.h> #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> diff --git a/drivers/char/rio/rioctrl.c b/drivers/char/rio/rioctrl.c index af61dc9972dd..4a088353a8ba 100644 --- a/drivers/char/rio/rioctrl.c +++ b/drivers/char/rio/rioctrl.c @@ -36,7 +36,7 @@ static char *_rioctrl_c_sccs_ = "@(#)rioctrl.c 1.3"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <asm/io.h> #include <asm/system.h> diff --git a/drivers/char/rio/rioinit.c b/drivers/char/rio/rioinit.c index cbefdac2d989..6ab8175c7d66 100644 --- a/drivers/char/rio/rioinit.c +++ b/drivers/char/rio/rioinit.c @@ -36,7 +36,7 @@ static char *_rioinit_c_sccs_ = "@(#)rioinit.c 1.3"; #define __NO_VERSION__ #include <linux/config.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <asm/io.h> #include <asm/system.h> diff --git a/drivers/char/rio/riointr.c b/drivers/char/rio/riointr.c index f52124b78cac..c97f88640f40 100644 --- a/drivers/char/rio/riointr.c +++ b/drivers/char/rio/riointr.c @@ -36,8 +36,9 @@ static char *_riointr_c_sccs_ = "@(#)riointr.c 1.2"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> +#include <linux/tty.h> #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> diff --git a/drivers/char/rio/rioparam.c b/drivers/char/rio/rioparam.c index 4ce8443c3417..069172fec3e8 100644 --- a/drivers/char/rio/rioparam.c +++ b/drivers/char/rio/rioparam.c @@ -36,8 +36,9 @@ static char *_rioparam_c_sccs_ = "@(#)rioparam.c 1.3"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> +#include <linux/tty.h> #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> diff --git a/drivers/char/rio/rioroute.c b/drivers/char/rio/rioroute.c index ab78ddf5d1a1..b621005dc2a9 100644 --- a/drivers/char/rio/rioroute.c +++ b/drivers/char/rio/rioroute.c @@ -35,7 +35,7 @@ static char *_rioroute_c_sccs_ = "@(#)rioroute.c 1.3"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <asm/io.h> #include <asm/system.h> diff --git a/drivers/char/rio/riotable.c b/drivers/char/rio/riotable.c index 2b82c25ad457..c4a048b7b798 100644 --- a/drivers/char/rio/riotable.c +++ b/drivers/char/rio/riotable.c @@ -35,7 +35,7 @@ static char *_riotable_c_sccs_ = "@(#)riotable.c 1.2"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <asm/io.h> #include <asm/system.h> diff --git a/drivers/char/rio/riotty.c b/drivers/char/rio/riotty.c index c9134e3fc84b..aaa7a1f32796 100644 --- a/drivers/char/rio/riotty.c +++ b/drivers/char/rio/riotty.c @@ -38,8 +38,9 @@ static char *_riotty_c_sccs_ = "@(#)riotty.c 1.3"; #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> +#include <linux/tty.h> #include <asm/io.h> #include <asm/system.h> #include <asm/string.h> diff --git a/drivers/char/rocket.c b/drivers/char/rocket.c index 5cecdde405a6..7db2405edd58 100644 --- a/drivers/char/rocket.c +++ b/drivers/char/rocket.c @@ -66,7 +66,7 @@ #include <linux/major.h> #include <linux/kernel.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/sched.h> diff --git a/drivers/char/sbc60xxwdt.c b/drivers/char/sbc60xxwdt.c index 0c3deed84165..e3f35a142370 100644 --- a/drivers/char/sbc60xxwdt.c +++ b/drivers/char/sbc60xxwdt.c @@ -63,7 +63,7 @@ #include <linux/sched.h> #include <linux/miscdevice.h> #include <linux/watchdog.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <linux/smp_lock.h> diff --git a/drivers/char/scan_keyb.c b/drivers/char/scan_keyb.c index 6ba861be2615..20ac1e7e0bc2 100644 --- a/drivers/char/scan_keyb.c +++ b/drivers/char/scan_keyb.c @@ -16,7 +16,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/kbd_kern.h> struct scan_keyboard { diff --git a/drivers/char/selection.c b/drivers/char/selection.c index b804a61e1f09..39cf73765faf 100644 --- a/drivers/char/selection.c +++ b/drivers/char/selection.c @@ -15,7 +15,7 @@ #include <linux/tty.h> #include <linux/sched.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/types.h> #include <asm/uaccess.h> diff --git a/drivers/char/serial_21285.c b/drivers/char/serial_21285.c index 16ad022bd7a4..f8541f3cfa1d 100644 --- a/drivers/char/serial_21285.c +++ b/drivers/char/serial_21285.c @@ -19,7 +19,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/console.h> diff --git a/drivers/char/serial_amba.c b/drivers/char/serial_amba.c index eaab7d34e626..cbd353846293 100644 --- a/drivers/char/serial_amba.c +++ b/drivers/char/serial_amba.c @@ -48,7 +48,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/circ_buf.h> #include <linux/serial.h> diff --git a/drivers/char/sh-sci.c b/drivers/char/sh-sci.c index c14fa8487a2d..e329bfbb13bd 100644 --- a/drivers/char/sh-sci.c +++ b/drivers/char/sh-sci.c @@ -29,7 +29,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> #ifdef CONFIG_SERIAL_CONSOLE diff --git a/drivers/char/stallion.c b/drivers/char/stallion.c index dbd51e51a11b..6628f9d05319 100644 --- a/drivers/char/stallion.c +++ b/drivers/char/stallion.c @@ -29,8 +29,9 @@ #include <linux/config.h> #include <linux/module.h> #include <linux/version.h> /* for linux/stallion.h */ -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> +#include <linux/tty.h> #include <linux/tty_flip.h> #include <linux/serial.h> #include <linux/cd1400.h> diff --git a/drivers/char/synclink.c b/drivers/char/synclink.c index 156c683e4d5e..da09b33a6c8d 100644 --- a/drivers/char/synclink.c +++ b/drivers/char/synclink.c @@ -78,7 +78,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/netdevice.h> diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index 71773fa6c8db..ad9b94da2a76 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c @@ -13,6 +13,7 @@ #include <linux/interrupt.h> #include <linux/mm.h> #include <linux/fs.h> +#include <linux/tty.h> #include <linux/mount.h> #include <linux/kdev_t.h> #include <linux/major.h> diff --git a/drivers/char/tpqic02.c b/drivers/char/tpqic02.c index 536942f41398..0f9be7ac5aa6 100644 --- a/drivers/char/tpqic02.c +++ b/drivers/char/tpqic02.c @@ -87,7 +87,7 @@ #include <linux/ioport.h> #include <linux/tpqic02.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/smp_lock.h> #include <linux/devfs_fs_kernel.h> diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index dff7458ae4b9..57628904e1d7 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c @@ -81,7 +81,7 @@ #include <linux/kd.h> #include <linux/mm.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/poll.h> #include <linux/proc_fs.h> #include <linux/init.h> diff --git a/drivers/char/vme_scc.c b/drivers/char/vme_scc.c index d6bc4e63b521..67ed42822c79 100644 --- a/drivers/char/vme_scc.c +++ b/drivers/char/vme_scc.c @@ -31,7 +31,7 @@ #include <linux/delay.h> #include <linux/tqueue.h> #include <linux/version.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/miscdevice.h> #include <linux/console.h> #include <linux/init.h> diff --git a/drivers/char/vt.c b/drivers/char/vt.c index 0a085944c31f..31c4fc470999 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c @@ -19,7 +19,7 @@ #include <linux/kd.h> #include <linux/vt.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/major.h> #include <linux/fs.h> #include <linux/console.h> diff --git a/drivers/char/wdt.c b/drivers/char/wdt.c index 9600a5b17ce8..0da4f4241831 100644 --- a/drivers/char/wdt.c +++ b/drivers/char/wdt.c @@ -40,7 +40,7 @@ #include <linux/miscdevice.h> #include <linux/watchdog.h> #include "wd501p.h" -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <asm/io.h> diff --git a/drivers/char/wdt_pci.c b/drivers/char/wdt_pci.c index 5ff7210aeeaa..f5572a1c7a36 100644 --- a/drivers/char/wdt_pci.c +++ b/drivers/char/wdt_pci.c @@ -43,7 +43,7 @@ #include <linux/watchdog.h> #define WDT_IS_PCI #include "wd501p.h" -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <asm/io.h> diff --git a/drivers/dio/dio.c b/drivers/dio/dio.c index ad4cc754460f..bf8468cfa4a1 100644 --- a/drivers/dio/dio.c +++ b/drivers/dio/dio.c @@ -28,7 +28,7 @@ #include <linux/kernel.h> #include <linux/types.h> #include <linux/dio.h> -#include <linux/malloc.h> /* kmalloc() */ +#include <linux/slab.h> /* kmalloc() */ #include <linux/init.h> #include <asm/hwtest.h> /* hwreg_present() */ #include <asm/io.h> /* readb() */ diff --git a/drivers/fc4/fc.c b/drivers/fc4/fc.c index 4123a73649ab..7c1ee6927e6b 100644 --- a/drivers/fc4/fc.c +++ b/drivers/fc4/fc.c @@ -30,7 +30,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/init.h> #include <linux/blk.h> diff --git a/drivers/fc4/soc.c b/drivers/fc4/soc.c index 329c2ae45f22..e78f781fc481 100644 --- a/drivers/fc4/soc.c +++ b/drivers/fc4/soc.c @@ -29,7 +29,7 @@ static char *version = #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/init.h> #include <asm/bitops.h> diff --git a/drivers/fc4/socal.c b/drivers/fc4/socal.c index 51f7b095d2d3..0dc30e22e096 100644 --- a/drivers/fc4/socal.c +++ b/drivers/fc4/socal.c @@ -24,7 +24,7 @@ static char *version = #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/init.h> #include <asm/system.h> diff --git a/drivers/i2c/i2c-algo-bit.c b/drivers/i2c/i2c-algo-bit.c index c4ecf7daece9..48d6c6492c8a 100644 --- a/drivers/i2c/i2c-algo-bit.c +++ b/drivers/i2c/i2c-algo-bit.c @@ -26,7 +26,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/init.h> #include <asm/uaccess.h> diff --git a/drivers/i2c/i2c-algo-pcf.c b/drivers/i2c/i2c-algo-pcf.c index cadd051b7350..5618b7557f17 100644 --- a/drivers/i2c/i2c-algo-pcf.c +++ b/drivers/i2c/i2c-algo-pcf.c @@ -29,7 +29,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/init.h> #include <asm/uaccess.h> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 84e6003640a4..b9db448d274b 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -25,7 +25,7 @@ #include <linux/module.h> #include <linux/kernel.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/proc_fs.h> #include <linux/config.h> @@ -1277,31 +1277,14 @@ static int __init i2c_init(void) } #ifndef MODULE -#ifdef CONFIG_I2C_CHARDEV extern int i2c_dev_init(void); -#endif -#ifdef CONFIG_I2C_ALGOBIT extern int i2c_algo_bit_init(void); -#endif -#ifdef CONFIG_I2C_BITLP extern int i2c_bitlp_init(void); -#endif -#ifdef CONFIG_I2C_BITELV extern int i2c_bitelv_init(void); -#endif -#ifdef CONFIG_I2C_BITVELLE extern int i2c_bitvelle_init(void); -#endif -#ifdef CONFIG_I2C_BITVIA extern int i2c_bitvia_init(void); -#endif - -#ifdef CONFIG_I2C_ALGOPCF extern int i2c_algo_pcf_init(void); -#endif -#ifdef CONFIG_I2C_PCFISA extern int i2c_pcfisa_init(void); -#endif /* This is needed for automatic patch generation: sensors code starts here */ /* This is needed for automatic patch generation: sensors code ends here */ diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c index cf6afc575ce2..b647b16ad14c 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c @@ -34,7 +34,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/fs.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #if LINUX_KERNEL_VERSION >= KERNEL_VERSION(2,4,0) #include <linux/smp_lock.h> diff --git a/drivers/i2c/i2c-elektor.c b/drivers/i2c/i2c-elektor.c index 9e82fbdf4026..590f42ff2c62 100644 --- a/drivers/i2c/i2c-elektor.c +++ b/drivers/i2c/i2c-elektor.c @@ -28,7 +28,7 @@ #include <linux/ioport.h> #include <linux/module.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/init.h> #include <asm/irq.h> diff --git a/drivers/i2c/i2c-elv.c b/drivers/i2c/i2c-elv.c index adae40c4ce95..0fcd9a65b35f 100644 --- a/drivers/i2c/i2c-elv.c +++ b/drivers/i2c/i2c-elv.c @@ -26,7 +26,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/init.h> diff --git a/drivers/i2c/i2c-pcf8584.h b/drivers/i2c/i2c-pcf8584.h index 9f0874012f91..4908ebae5526 100644 --- a/drivers/i2c/i2c-pcf8584.h +++ b/drivers/i2c/i2c-pcf8584.h @@ -75,4 +75,4 @@ #define I2C_PCF_INTREG I2C_PCF_ES2 #define I2C_PCF_CLKREG I2C_PCF_ES1 -#endif I2C_PCF8584_H +#endif /* I2C_PCF8584_H */ diff --git a/drivers/i2o/i2o_block.c b/drivers/i2o/i2o_block.c index 857b32a7efd9..641b8451190b 100644 --- a/drivers/i2o/i2o_block.c +++ b/drivers/i2o/i2o_block.c @@ -51,7 +51,7 @@ #include <linux/i2o.h> #include <linux/blkdev.h> #include <linux/blkpg.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/hdreg.h> #include <linux/notifier.h> diff --git a/drivers/i2o/i2o_config.c b/drivers/i2o/i2o_config.c index 9a9cfec6e142..aed4b986deba 100644 --- a/drivers/i2o/i2o_config.c +++ b/drivers/i2o/i2o_config.c @@ -31,7 +31,7 @@ #include <linux/i2o.h> #include <linux/errno.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/miscdevice.h> #include <linux/mm.h> #include <linux/spinlock.h> diff --git a/drivers/i2o/i2o_core.c b/drivers/i2o/i2o_core.c index e9942c614a50..b947ee337097 100644 --- a/drivers/i2o/i2o_core.c +++ b/drivers/i2o/i2o_core.c @@ -31,7 +31,7 @@ #include <linux/errno.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/spinlock.h> #include <linux/smp_lock.h> diff --git a/drivers/i2o/i2o_lan.c b/drivers/i2o/i2o_lan.c index 8b9e4c448136..c49173c92ab0 100644 --- a/drivers/i2o/i2o_lan.c +++ b/drivers/i2o/i2o_lan.c @@ -36,7 +36,7 @@ #include <linux/skbuff.h> #include <linux/if_arp.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/spinlock.h> #include <linux/tqueue.h> diff --git a/drivers/i2o/i2o_pci.c b/drivers/i2o/i2o_pci.c index 6b646a1d8864..fea8a60c2ceb 100644 --- a/drivers/i2o/i2o_pci.c +++ b/drivers/i2o/i2o_pci.c @@ -24,7 +24,7 @@ #include <linux/i2o.h> #include <linux/errno.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/io.h> #ifdef CONFIG_MTRR diff --git a/drivers/ide/hd.c b/drivers/ide/hd.c index bed5f6210b54..e49dd0b9c1f5 100644 --- a/drivers/ide/hd.c +++ b/drivers/ide/hd.c @@ -36,7 +36,7 @@ #include <linux/kernel.h> #include <linux/hdreg.h> #include <linux/genhd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/ioport.h> #include <linux/mc146818rtc.h> /* CMOS defines */ diff --git a/drivers/ide/icside.c b/drivers/ide/icside.c index c727cb889bc2..ef46e91ed286 100644 --- a/drivers/ide/icside.c +++ b/drivers/ide/icside.c @@ -14,7 +14,7 @@ #include <linux/string.h> #include <linux/module.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blkdev.h> #include <linux/errno.h> #include <linux/hdreg.h> diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 8528dc8d3904..16b0ade47f3c 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c @@ -302,7 +302,7 @@ #include <linux/kernel.h> #include <linux/delay.h> #include <linux/timer.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> #include <linux/errno.h> #include <linux/cdrom.h> diff --git a/drivers/ide/ide-cs.c b/drivers/ide/ide-cs.c index bf4350f73264..4a199ca71912 100644 --- a/drivers/ide/ide-cs.c +++ b/drivers/ide/ide-cs.c @@ -19,7 +19,7 @@ are Copyright (C) 1999 David A. Hinds. All Rights Reserved. Alternatively, the contents of this file may be used under the - terms of the GNU Public License version 2 (the "GPL"), in which + terms of the GNU General Public License version 2 (the "GPL"), in which case the provisions of the GPL are applicable instead of the above. If you wish to allow the use of your version of this file only under the terms of the GPL and not to allow others to use @@ -36,7 +36,7 @@ #include <linux/init.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/ioport.h> @@ -95,7 +95,7 @@ static void ide_release(u_long arg); static int ide_event(event_t event, int priority, event_callback_args_t *args); -static dev_info_t dev_info = "ide_cs"; +static dev_info_t dev_info = "ide-cs"; static dev_link_t *ide_attach(void); static void ide_detach(dev_link_t *); @@ -387,6 +387,11 @@ void ide_release(u_long arg) ide_unregister(info->hd); MOD_DEC_USE_COUNT; } + + request_region(link->io.BasePort1, link->io.NumPorts1,"ide-cs"); + if (link->io.NumPorts2) + request_region(link->io.BasePort2, link->io.NumPorts2,"ide-cs"); + info->ndev = 0; link->dev = NULL; diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index 08cee052a5c3..d246487e9256 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c @@ -44,7 +44,7 @@ #include <linux/major.h> #include <linux/errno.h> #include <linux/genhd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/ide.h> diff --git a/drivers/ide/ide-features.c b/drivers/ide/ide-features.c index 2dfef8bee0d5..80a28c9631a6 100644 --- a/drivers/ide/ide-features.c +++ b/drivers/ide/ide-features.c @@ -27,7 +27,7 @@ #include <linux/errno.h> #include <linux/genhd.h> #include <linux/blkpg.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/delay.h> #include <linux/hdreg.h> @@ -189,6 +189,10 @@ int ide_driveid_update (ide_drive_t *drive) __cli(); /* local CPU only; some systems need this */ SELECT_MASK(HWIF(drive), drive, 0); id = kmalloc(SECTOR_WORDS*4, GFP_ATOMIC); + if (!id) { + __restore_flags(flags); /* local CPU only */ + return 0; + } ide_input_data(drive, id, SECTOR_WORDS); (void) GET_STAT(); /* clear drive IRQ */ ide__sti(); /* local CPU only */ diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index b6258aad80f5..52343a5f3e82 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c @@ -45,7 +45,7 @@ #include <linux/major.h> #include <linux/errno.h> #include <linux/genhd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/cdrom.h> #include <linux/ide.h> diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 4ade9d555b9d..8b3a37914e49 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c @@ -40,7 +40,7 @@ #include <linux/major.h> #include <linux/errno.h> #include <linux/genhd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/ide.h> #include <linux/spinlock.h> diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index 0e7a23994c7b..774594bbc746 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c @@ -399,7 +399,7 @@ #include <linux/devfs_fs_kernel.h> #include <linux/errno.h> #include <linux/genhd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/ide.h> #include <linux/smp_lock.h> diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 95640895a22b..5dd08aea728d 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c @@ -140,7 +140,7 @@ #include <linux/errno.h> #include <linux/genhd.h> #include <linux/blkpg.h> -#include <linux/malloc.h> +#include <linux/slab.h> #ifndef MODULE #include <linux/init.h> #endif /* MODULE */ diff --git a/drivers/ide/rapide.c b/drivers/ide/rapide.c index a842a3287466..4976e49dc2ac 100644 --- a/drivers/ide/rapide.c +++ b/drivers/ide/rapide.c @@ -9,7 +9,7 @@ */ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blkdev.h> #include <linux/errno.h> #include <linux/ide.h> diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 8e676b8da378..d1df86bc9d08 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c @@ -33,7 +33,7 @@ #define EVDEV_BUFFER_SIZE 64 #include <linux/poll.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/input.h> diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c index 4e12f55b7234..d3323f733c6f 100644 --- a/drivers/input/joydev.c +++ b/drivers/input/joydev.c @@ -38,7 +38,7 @@ #include <linux/input.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/miscdevice.h> #include <linux/module.h> diff --git a/drivers/input/keybdev.c b/drivers/input/keybdev.c index 95fce5e80f5f..2ab0e58dd100 100644 --- a/drivers/input/keybdev.c +++ b/drivers/input/keybdev.c @@ -31,8 +31,9 @@ #include <linux/config.h> #include <linux/kbd_ll.h> #include <linux/input.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> +#include <linux/tty.h> #include <linux/module.h> #include <linux/kbd_kern.h> diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c index e6a9e02a131a..44344f8df70e 100644 --- a/drivers/input/mousedev.c +++ b/drivers/input/mousedev.c @@ -32,7 +32,7 @@ #define MOUSEDEV_MINORS 32 #define MOUSEDEV_MIX 31 -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/poll.h> #include <linux/module.h> #include <linux/init.h> diff --git a/drivers/isdn/act2000/act2000.h b/drivers/isdn/act2000/act2000.h index 432f433cb396..db19bf24564b 100644 --- a/drivers/isdn/act2000/act2000.h +++ b/drivers/isdn/act2000/act2000.h @@ -88,7 +88,7 @@ typedef struct act2000_fwid { #include <asm/io.h> #include <linux/kernel.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/ioport.h> diff --git a/drivers/isdn/avmb1/avm_cs.c b/drivers/isdn/avmb1/avm_cs.c index 3b184c54ea5a..7ad7360d9598 100644 --- a/drivers/isdn/avmb1/avm_cs.c +++ b/drivers/isdn/avmb1/avm_cs.c @@ -11,7 +11,7 @@ #include <linux/init.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/tty.h> diff --git a/drivers/isdn/avmb1/capi.c b/drivers/isdn/avmb1/capi.c index 10b804658df0..3227d68b2a2e 100644 --- a/drivers/isdn/avmb1/capi.c +++ b/drivers/isdn/avmb1/capi.c @@ -223,7 +223,7 @@ #include <linux/kernel.h> #include <linux/major.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/fs.h> #include <linux/signal.h> diff --git a/drivers/isdn/avmb1/capidrv.c b/drivers/isdn/avmb1/capidrv.c index 24eeb3739fd9..b4bb90130b66 100644 --- a/drivers/isdn/avmb1/capidrv.c +++ b/drivers/isdn/avmb1/capidrv.c @@ -198,7 +198,7 @@ #include <linux/kernel.h> #include <linux/major.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/fs.h> #include <linux/signal.h> diff --git a/drivers/isdn/avmb1/capifs.c b/drivers/isdn/avmb1/capifs.c index 268ddfc4edf4..e40ef0bb1e4a 100644 --- a/drivers/isdn/avmb1/capifs.c +++ b/drivers/isdn/avmb1/capifs.c @@ -86,7 +86,7 @@ #include <linux/kernel.h> #include <linux/locks.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ctype.h> #include <asm/bitops.h> #include <asm/uaccess.h> diff --git a/drivers/isdn/eicon/Divas_mod.c b/drivers/isdn/eicon/Divas_mod.c index 53217f81f0b9..d3b572c2de0f 100644 --- a/drivers/isdn/eicon/Divas_mod.c +++ b/drivers/isdn/eicon/Divas_mod.c @@ -34,7 +34,7 @@ #include <linux/module.h> #include <linux/pci.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <errno.h> #include "adapter.h" diff --git a/drivers/isdn/eicon/eicon.h b/drivers/isdn/eicon/eicon.h index 42e9b3b954f7..eefd379a5ff8 100644 --- a/drivers/isdn/eicon/eicon.h +++ b/drivers/isdn/eicon/eicon.h @@ -139,7 +139,7 @@ typedef struct { #include <asm/io.h> #include <linux/kernel.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/ioport.h> diff --git a/drivers/isdn/eicon/linchr.c b/drivers/isdn/eicon/linchr.c index 782429523be5..9a3ccdac6ada 100644 --- a/drivers/isdn/eicon/linchr.c +++ b/drivers/isdn/eicon/linchr.c @@ -28,7 +28,7 @@ #include <linux/kernel.h> #include <linux/poll.h> #include <linux/fs.h> -#include <linux/malloc.h> +#include <linux/slab.h> #undef N_DATA diff --git a/drivers/isdn/eicon/linio.c b/drivers/isdn/eicon/linio.c index 74c5990696a9..0412eb6ba8ec 100644 --- a/drivers/isdn/eicon/linio.c +++ b/drivers/isdn/eicon/linio.c @@ -29,7 +29,7 @@ #include <asm/io.h> #include <asm/system.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/delay.h> #undef N_DATA diff --git a/drivers/isdn/hisax/hisax.h b/drivers/isdn/hisax/hisax.h index aafbe05a3e14..63c115d78126 100644 --- a/drivers/isdn/hisax/hisax.h +++ b/drivers/isdn/hisax/hisax.h @@ -16,7 +16,7 @@ #include <linux/delay.h> #include <linux/kernel.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/ioport.h> diff --git a/drivers/isdn/hysdn/hysdn_boot.c b/drivers/isdn/hysdn/hysdn_boot.c index 2af44170e50b..2218cc982b36 100644 --- a/drivers/isdn/hysdn/hysdn_boot.c +++ b/drivers/isdn/hysdn/hysdn_boot.c @@ -26,7 +26,7 @@ #include <linux/module.h> #include <linux/version.h> #include <linux/vmalloc.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/uaccess.h> #include "hysdn_defs.h" diff --git a/drivers/isdn/hysdn/hysdn_init.c b/drivers/isdn/hysdn/hysdn_init.c index c3443b74b227..06282b96fe59 100644 --- a/drivers/isdn/hysdn/hysdn_init.c +++ b/drivers/isdn/hysdn/hysdn_init.c @@ -27,7 +27,7 @@ #include <linux/version.h> #include <linux/poll.h> #include <linux/vmalloc.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include "hysdn_defs.h" diff --git a/drivers/isdn/icn/icn.h b/drivers/isdn/icn/icn.h index b49887c2aadf..fca9dc45d996 100644 --- a/drivers/isdn/icn/icn.h +++ b/drivers/isdn/icn/icn.h @@ -55,7 +55,7 @@ typedef struct icn_cdef { #include <asm/io.h> #include <linux/kernel.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/ioport.h> diff --git a/drivers/isdn/isdn_bsdcomp.c b/drivers/isdn/isdn_bsdcomp.c index e5cc0ea30be5..57d99e8833a6 100644 --- a/drivers/isdn/isdn_bsdcomp.c +++ b/drivers/isdn/isdn_bsdcomp.c @@ -61,7 +61,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/tty.h> #include <linux/errno.h> #include <linux/string.h> /* used in new tty drivers */ diff --git a/drivers/isdn/isdn_v110.c b/drivers/isdn/isdn_v110.c index 4272b69b2ef9..74bf8562615e 100644 --- a/drivers/isdn/isdn_v110.c +++ b/drivers/isdn/isdn_v110.c @@ -22,7 +22,7 @@ #include <linux/string.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/isdn.h> diff --git a/drivers/isdn/isdnloop/isdnloop.h b/drivers/isdn/isdnloop/isdnloop.h index e0ddaaf36a37..c2b005404e79 100644 --- a/drivers/isdn/isdnloop/isdnloop.h +++ b/drivers/isdn/isdnloop/isdnloop.h @@ -53,7 +53,7 @@ typedef struct isdnloop_sdef { #include <asm/io.h> #include <linux/kernel.h> #include <linux/signal.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/mman.h> #include <linux/ioport.h> diff --git a/drivers/isdn/pcbit/callbacks.c b/drivers/isdn/pcbit/callbacks.c index afa22b7401a6..ed2ba29d9814 100644 --- a/drivers/isdn/pcbit/callbacks.c +++ b/drivers/isdn/pcbit/callbacks.c @@ -27,7 +27,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/tqueue.h> #include <linux/skbuff.h> diff --git a/drivers/isdn/pcbit/capi.c b/drivers/isdn/pcbit/capi.c index 1a32c0825429..57b23498fe54 100644 --- a/drivers/isdn/pcbit/capi.c +++ b/drivers/isdn/pcbit/capi.c @@ -37,7 +37,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/tqueue.h> diff --git a/drivers/isdn/pcbit/drv.c b/drivers/isdn/pcbit/drv.c index 1e13e0c6870e..841a1dd8e1eb 100644 --- a/drivers/isdn/pcbit/drv.c +++ b/drivers/isdn/pcbit/drv.c @@ -28,7 +28,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/interrupt.h> #include <linux/string.h> diff --git a/drivers/isdn/pcbit/edss1.c b/drivers/isdn/pcbit/edss1.c index 1b76b3462038..991f430e66d8 100644 --- a/drivers/isdn/pcbit/edss1.c +++ b/drivers/isdn/pcbit/edss1.c @@ -26,7 +26,7 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/tqueue.h> #include <linux/skbuff.h> diff --git a/drivers/isdn/pcbit/layer2.c b/drivers/isdn/pcbit/layer2.c index 98daf755849d..e80b12fafc21 100644 --- a/drivers/isdn/pcbit/layer2.c +++ b/drivers/isdn/pcbit/layer2.c @@ -40,7 +40,7 @@ #include <linux/string.h> #include <linux/kernel.h> #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> #include <linux/tqueue.h> #include <linux/mm.h> diff --git a/drivers/isdn/sc/includes.h b/drivers/isdn/sc/includes.h index 951f06f258f8..840dfc0976fd 100644 --- a/drivers/isdn/sc/includes.h +++ b/drivers/isdn/sc/includes.h @@ -5,7 +5,7 @@ #include <asm/io.h> #include <linux/delay.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/ioport.h> #include <linux/timer.h> diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index d17382f4fcc5..e10984ce377a 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c @@ -19,7 +19,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/devfs_fs_kernel.h> diff --git a/drivers/macintosh/adbhid.c b/drivers/macintosh/adbhid.c index 8ac4f37d4620..bc1c8a7b83a8 100644 --- a/drivers/macintosh/adbhid.c +++ b/drivers/macintosh/adbhid.c @@ -33,7 +33,7 @@ #include <linux/config.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/notifier.h> #include <linux/input.h> diff --git a/drivers/macintosh/rtc.c b/drivers/macintosh/rtc.c index 3e1435a6c809..ebfcc1e02295 100644 --- a/drivers/macintosh/rtc.c +++ b/drivers/macintosh/rtc.c @@ -17,7 +17,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/poll.h> #include <linux/init.h> diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index 5147d153038e..fe92e94014f9 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c @@ -26,7 +26,7 @@ #include <linux/miscdevice.h> #include <linux/blkdev.h> #include <linux/pci.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/poll.h> #include <linux/adb.h> #include <linux/pmu.h> diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c index 473700fa8ee9..5ac40964db11 100644 --- a/drivers/macintosh/via-pmu68k.c +++ b/drivers/macintosh/via-pmu68k.c @@ -26,7 +26,7 @@ #include <linux/miscdevice.h> #include <linux/blkdev.h> #include <linux/pci.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/adb.h> diff --git a/drivers/md/linear.c b/drivers/md/linear.c index e6b50b84d820..52583645fdf7 100644 --- a/drivers/md/linear.c +++ b/drivers/md/linear.c @@ -19,7 +19,7 @@ #include <linux/module.h> #include <linux/raid/md.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/raid/linear.h> diff --git a/drivers/md/md.c b/drivers/md/md.c index 73a5409f999e..b2ed89dcca29 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -61,6 +61,10 @@ extern asmlinkage long sys_setsid(void); # define dprintk(x...) do { } while(0) #endif +#ifndef MODULE +static void autostart_arrays (void); +#endif + static mdk_personality_t *pers[MAX_PERSONALITY]; /* @@ -2030,70 +2034,6 @@ abort: #undef AUTOADDING #undef AUTORUNNING -struct { - int set; - int noautodetect; -} raid_setup_args md__initdata; - -void md_setup_drive (void) md__init; - -/* - * Searches all registered partitions for autorun RAID arrays - * at boot time. - */ -static int detected_devices[128] md__initdata; -static int dev_cnt; - -void md_autodetect_dev(kdev_t dev) -{ - if (dev_cnt >= 0 && dev_cnt < 127) - detected_devices[dev_cnt++] = dev; -} - - -static void autostart_arrays (void) -{ - mdk_rdev_t *rdev; - int i; - - printk(KERN_INFO "autodetecting RAID arrays\n"); - - for (i=0; i<dev_cnt; i++) { - kdev_t dev = detected_devices[i]; - - if (md_import_device(dev,1)) { - printk(KERN_ALERT "could not import %s!\n", - partition_name(dev)); - continue; - } - /* - * Sanity checks: - */ - rdev = find_rdev_all(dev); - if (!rdev) { - MD_BUG(); - continue; - } - if (rdev->faulty) { - MD_BUG(); - continue; - } - md_list_add(&rdev->pending, &pending_raid_disks); - } - - autorun_devices(-1); -} - -int md__init md_run_setup(void) -{ - if (raid_setup_args.noautodetect) - printk(KERN_INFO "skipping autodetection of RAID arrays\n"); - else - autostart_arrays(); - dev_cnt = -1; /* make sure further calls to md_autodetect_dev are ignored */ - md_setup_drive(); - return 0; -} static int get_version (void * arg) { @@ -2555,10 +2495,12 @@ static int md_ioctl (struct inode *inode, struct file *file, md_print_devices(); goto done_unlock; +#ifndef MODULE case RAID_AUTORUN: err = 0; autostart_arrays(); goto done; +#endif case BLKGETSIZE: /* Return device size */ if (!arg) { @@ -3556,30 +3498,7 @@ struct notifier_block md_notifier = { NULL, 0 }; -#ifndef MODULE -static int md__init raid_setup(char *str) -{ - int len, pos; - len = strlen(str) + 1; - pos = 0; - - while (pos < len) { - char *comma = strchr(str+pos, ','); - int wlen; - if (comma) - wlen = (comma-str)-pos; - else wlen = (len-1)-pos; - - if (strncmp(str, "noautodetect", wlen) == 0) - raid_setup_args.noautodetect = 1; - pos += wlen+1; - } - raid_setup_args.set = 1; - return 1; -} -__setup("raid=", raid_setup); -#endif static void md_geninit (void) { int i; @@ -3641,6 +3560,70 @@ int md__init md_init (void) return (0); } + +#ifndef MODULE + +/* + * When md (and any require personalities) are compiled into the kernel + * (not a module), arrays can be assembles are boot time using with AUTODETECT + * where specially marked partitions are registered with md_autodetect_dev(), + * and with MD_BOOT where devices to be collected are given on the boot line + * with md=..... + * The code for that is here. + */ + +struct { + int set; + int noautodetect; +} raid_setup_args md__initdata; + +/* + * Searches all registered partitions for autorun RAID arrays + * at boot time. + */ +static int detected_devices[128] md__initdata; +static int dev_cnt; + +void md_autodetect_dev(kdev_t dev) +{ + if (dev_cnt >= 0 && dev_cnt < 127) + detected_devices[dev_cnt++] = dev; +} + + +static void autostart_arrays (void) +{ + mdk_rdev_t *rdev; + int i; + + printk(KERN_INFO "autodetecting RAID arrays\n"); + + for (i=0; i<dev_cnt; i++) { + kdev_t dev = detected_devices[i]; + + if (md_import_device(dev,1)) { + printk(KERN_ALERT "could not import %s!\n", + partition_name(dev)); + continue; + } + /* + * Sanity checks: + */ + rdev = find_rdev_all(dev); + if (!rdev) { + MD_BUG(); + continue; + } + if (rdev->faulty) { + MD_BUG(); + continue; + } + md_list_add(&rdev->pending, &pending_raid_disks); + } + + autorun_devices(-1); +} + static struct { char device_set [MAX_MD_DEVS]; int pers[MAX_MD_DEVS]; @@ -3809,9 +3792,47 @@ void md__init md_setup_drive(void) } } +static int md__init raid_setup(char *str) +{ + int len, pos; + + len = strlen(str) + 1; + pos = 0; + + while (pos < len) { + char *comma = strchr(str+pos, ','); + int wlen; + if (comma) + wlen = (comma-str)-pos; + else wlen = (len-1)-pos; + + if (strncmp(str, "noautodetect", wlen) == 0) + raid_setup_args.noautodetect = 1; + pos += wlen+1; + } + raid_setup_args.set = 1; + return 1; +} + +int md__init md_run_setup(void) +{ + if (raid_setup_args.noautodetect) + printk(KERN_INFO "skipping autodetection of RAID arrays\n"); + else + autostart_arrays(); + dev_cnt = -1; /* make sure further calls to md_autodetect_dev are ignored */ + md_setup_drive(); + return 0; +} + +__setup("raid=", raid_setup); __setup("md=", md_setup); -#ifdef MODULE +__initcall(md_init); +__initcall(md_run_setup); + +#else /* It is a MODULE */ + int init_module (void) { return md_init(); @@ -3860,9 +3881,6 @@ void cleanup_module (void) } #endif -__initcall(md_init); -__initcall(md_run_setup); - MD_EXPORT_SYMBOL(md_size); MD_EXPORT_SYMBOL(register_md_personality); MD_EXPORT_SYMBOL(unregister_md_personality); diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 3a381b6a22fc..358cb7caca5c 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -23,7 +23,7 @@ */ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/raid/raid1.h> #include <asm/atomic.h> diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 13903c6c1bac..d00cda6d480c 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -19,7 +19,7 @@ #include <linux/config.h> #include <linux/module.h> #include <linux/locks.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/raid/raid5.h> #include <asm/bitops.h> #include <asm/atomic.h> @@ -381,7 +381,7 @@ static void raid5_end_read_request (struct buffer_head * bh, int uptodate) if (bh == sh->bh_cache[i]) break; - PRINTK("end_read_request %lu/%d, %d, count: %d, uptodate %d.\n", sh->sector, i, atomic_read(&sh->count), uptodate); + PRINTK("end_read_request %lu/%d, count: %d, uptodate %d.\n", sh->sector, i, atomic_read(&sh->count), uptodate); if (i == disks) { BUG(); return; @@ -680,7 +680,6 @@ static void compute_parity(struct stripe_head *sh, int method) count = 1; bh_ptr[0] = sh->bh_cache[pd_idx]; - spin_lock_irq(&conf->device_lock); switch(method) { case READ_MODIFY_WRITE: if (!buffer_uptodate(sh->bh_cache[pd_idx])) @@ -707,13 +706,11 @@ static void compute_parity(struct stripe_head *sh, int method) sh->bh_write[i] = sh->bh_write[i]->b_reqnext; chosen[i]->b_reqnext = sh->bh_written[i]; sh->bh_written[i] = chosen[i]; - check_xor(); } break; case CHECK_PARITY: break; } - spin_unlock_irq(&conf->device_lock); if (count>1) { xor_block(count, bh_ptr); count = 1; @@ -723,7 +720,6 @@ static void compute_parity(struct stripe_head *sh, int method) if (chosen[i]) { struct buffer_head *bh = sh->bh_cache[i]; char *bdata; - mark_buffer_clean(chosen[i]); /* NO FIXME */ bdata = bh_kmap(chosen[i]); memcpy(bh->b_data, bdata,sh->size); @@ -766,6 +762,7 @@ static void add_stripe_bh (struct stripe_head *sh, struct buffer_head *bh, int d PRINTK("adding bh b#%lu to stripe s#%lu\n", bh->b_blocknr, sh->sector); + spin_lock(&sh->lock); spin_lock_irq(&conf->device_lock); bh->b_reqnext = NULL; if (rw == READ) @@ -778,6 +775,7 @@ static void add_stripe_bh (struct stripe_head *sh, struct buffer_head *bh, int d } *bhp = bh; spin_unlock_irq(&conf->device_lock); + spin_unlock(&sh->lock); PRINTK("added bh b#%lu to stripe s#%lu, disk %d.\n", bh->b_blocknr, sh->sector, dd_idx); } @@ -827,7 +825,7 @@ static void handle_stripe(struct stripe_head *sh) for (i=disks; i--; ) { bh = sh->bh_cache[i]; - PRINTK("check %d: state %lx read %p write %p written %p\n", i, bh->b_state, sh->bh_read[i], sh->bh_write[i], sh->bh_written[i]); + PRINTK("check %d: state 0x%lx read %p write %p written %p\n", i, bh->b_state, sh->bh_read[i], sh->bh_write[i], sh->bh_written[i]); /* maybe we can reply to a read */ if (buffer_uptodate(bh) && sh->bh_read[i]) { struct buffer_head *rbh, *rbh2; @@ -867,7 +865,6 @@ static void handle_stripe(struct stripe_head *sh) * need to be failed */ if (failed > 1 && to_read+to_write) { - spin_lock_irq(&conf->device_lock); for (i=disks; i--; ) { /* fail all writes first */ if (sh->bh_write[i]) to_write--; @@ -878,15 +875,16 @@ static void handle_stripe(struct stripe_head *sh) } /* fail any reads if this device is non-operational */ if (!conf->disks[i].operational) { + spin_lock_irq(&conf->device_lock); if (sh->bh_read[i]) to_read--; while ((bh = sh->bh_read[i])) { sh->bh_read[i] = bh->b_reqnext; bh->b_reqnext = return_fail; return_fail = bh; } + spin_unlock_irq(&conf->device_lock); } } - spin_unlock_irq(&conf->device_lock); if (syncing) { md_done_sync(conf->mddev, (sh->size>>10) - sh->sync_redone,0); clear_bit(STRIPE_SYNCING, &sh->state); @@ -911,10 +909,8 @@ static void handle_stripe(struct stripe_head *sh) /* maybe we can return some write requests */ struct buffer_head *wbh, *wbh2; PRINTK("Return write for disc %d\n", i); - spin_lock_irq(&conf->device_lock); wbh = sh->bh_written[i]; sh->bh_written[i] = NULL; - spin_unlock_irq(&conf->device_lock); while (wbh) { wbh2 = wbh->b_reqnext; wbh->b_reqnext = return_ok; @@ -1092,8 +1088,6 @@ static void handle_stripe(struct stripe_head *sh) bh->b_dev = conf->disks[i].dev; else if (conf->spare && action[i] == WRITE+1) bh->b_dev = conf->spare->dev; - else if (action[i] == READ+1) - BUG(); else skip=1; if (!skip) { PRINTK("for %ld schedule op %d on disc %d\n", sh->sector, action[i]-1, i); diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c index 7ce4a4cf8939..900aea47752c 100644 --- a/drivers/media/video/bttv-driver.c +++ b/drivers/media/video/bttv-driver.c @@ -27,7 +27,7 @@ #include <linux/fs.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/poll.h> #include <linux/pci.h> diff --git a/drivers/media/video/buz.c b/drivers/media/video/buz.c index baaa8f4ae585..69a490285a18 100644 --- a/drivers/media/video/buz.c +++ b/drivers/media/video/buz.c @@ -36,7 +36,7 @@ #include <linux/fs.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/pci.h> #include <linux/signal.h> diff --git a/drivers/media/video/bw-qcam.c b/drivers/media/video/bw-qcam.c index 602adb7d568d..1003edc543df 100644 --- a/drivers/media/video/bw-qcam.c +++ b/drivers/media/video/bw-qcam.c @@ -70,7 +70,7 @@ OTHER DEALINGS IN THE SOFTWARE. #include <linux/fs.h> #include <linux/init.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/parport.h> #include <linux/sched.h> diff --git a/drivers/media/video/c-qcam.c b/drivers/media/video/c-qcam.c index 642049de9d04..c8487d69c6b4 100644 --- a/drivers/media/video/c-qcam.c +++ b/drivers/media/video/c-qcam.c @@ -29,7 +29,7 @@ #include <linux/fs.h> #include <linux/init.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/parport.h> #include <linux/sched.h> diff --git a/drivers/media/video/i2c-old.c b/drivers/media/video/i2c-old.c index c896057cd56e..efe733ae2178 100644 --- a/drivers/media/video/i2c-old.c +++ b/drivers/media/video/i2c-old.c @@ -14,7 +14,7 @@ #include <linux/delay.h> #include <linux/locks.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/i2c-old.h> #define REGPRINT(x) if (verbose) (x) diff --git a/drivers/media/video/msp3400.c b/drivers/media/video/msp3400.c index b6ae3f62c4f4..bffb15220d70 100644 --- a/drivers/media/video/msp3400.c +++ b/drivers/media/video/msp3400.c @@ -42,7 +42,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/i2c.h> #include <linux/videodev.h> #include <asm/semaphore.h> diff --git a/drivers/media/video/planb.c b/drivers/media/video/planb.c index 7fcfcc945979..9030e163ae08 100644 --- a/drivers/media/video/planb.c +++ b/drivers/media/video/planb.c @@ -33,7 +33,7 @@ #include <linux/module.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/types.h> #include <linux/pci.h> #include <linux/delay.h> diff --git a/drivers/media/video/pms.c b/drivers/media/video/pms.c index 77893ad782e8..b2d8181c9c73 100644 --- a/drivers/media/video/pms.c +++ b/drivers/media/video/pms.c @@ -19,7 +19,7 @@ #include <linux/errno.h> #include <linux/fs.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/ioport.h> #include <linux/init.h> diff --git a/drivers/media/video/saa7111.c b/drivers/media/video/saa7111.c index 1eeeca352419..d55e3f1e4089 100644 --- a/drivers/media/video/saa7111.c +++ b/drivers/media/video/saa7111.c @@ -24,7 +24,7 @@ #include <linux/fs.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/pci.h> #include <linux/signal.h> diff --git a/drivers/media/video/saa7185.c b/drivers/media/video/saa7185.c index c30e6353b6c2..a3f664f845b3 100644 --- a/drivers/media/video/saa7185.c +++ b/drivers/media/video/saa7185.c @@ -24,7 +24,7 @@ #include <linux/fs.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/pci.h> #include <linux/signal.h> diff --git a/drivers/media/video/stradis.c b/drivers/media/video/stradis.c index 88c1e4baffda..d087d7a97e7e 100644 --- a/drivers/media/video/stradis.c +++ b/drivers/media/video/stradis.c @@ -26,7 +26,7 @@ #include <linux/fs.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/init.h> #include <linux/poll.h> diff --git a/drivers/media/video/tda7432.c b/drivers/media/video/tda7432.c index 889856738bc3..f40e58121c1c 100644 --- a/drivers/media/video/tda7432.c +++ b/drivers/media/video/tda7432.c @@ -34,7 +34,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/videodev.h> #include <linux/i2c.h> #include <linux/i2c-algo-bit.h> diff --git a/drivers/media/video/tda9875.c b/drivers/media/video/tda9875.c index 0cead825fd82..6f6784e3b943 100644 --- a/drivers/media/video/tda9875.c +++ b/drivers/media/video/tda9875.c @@ -24,7 +24,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/videodev.h> #include <linux/i2c.h> #include <linux/i2c-algo-bit.h> diff --git a/drivers/media/video/tuner-3036.c b/drivers/media/video/tuner-3036.c index 807ae339b16c..cfa0882fab04 100644 --- a/drivers/media/video/tuner-3036.c +++ b/drivers/media/video/tuner-3036.c @@ -20,7 +20,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/init.h> diff --git a/drivers/media/video/tuner.c b/drivers/media/video/tuner.c index 9316ef72ffef..9ff3c35415e2 100644 --- a/drivers/media/video/tuner.c +++ b/drivers/media/video/tuner.c @@ -5,7 +5,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/poll.h> #include <linux/i2c.h> #include <linux/types.h> diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c index 5a9c4575c4fb..8d037e3ccd70 100644 --- a/drivers/media/video/tvaudio.c +++ b/drivers/media/video/tvaudio.c @@ -22,7 +22,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/videodev.h> #include <linux/i2c.h> #include <linux/i2c-algo-bit.h> diff --git a/drivers/media/video/tvmixer.c b/drivers/media/video/tvmixer.c index 1e406921ec3e..944572f56917 100644 --- a/drivers/media/video/tvmixer.c +++ b/drivers/media/video/tvmixer.c @@ -5,7 +5,7 @@ #include <linux/timer.h> #include <linux/delay.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/i2c.h> #include <linux/videodev.h> #include <asm/semaphore.h> diff --git a/drivers/media/video/zr36120.c b/drivers/media/video/zr36120.c index 478af01f57d3..331ac4d3ffa1 100644 --- a/drivers/media/video/zr36120.c +++ b/drivers/media/video/zr36120.c @@ -25,7 +25,7 @@ #include <linux/fs.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/mm.h> #include <linux/pci.h> diff --git a/drivers/mtd/cfi_cmdset_0001.c b/drivers/mtd/cfi_cmdset_0001.c index 44fb4ec36238..56e5a394afc5 100644 --- a/drivers/mtd/cfi_cmdset_0001.c +++ b/drivers/mtd/cfi_cmdset_0001.c @@ -15,7 +15,7 @@ #include <asm/byteorder.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/mtd/map.h> #include <linux/mtd/cfi.h> diff --git a/drivers/mtd/cfi_cmdset_0002.c b/drivers/mtd/cfi_cmdset_0002.c index 7e2b4aa41b32..3b0d9b7af896 100644 --- a/drivers/mtd/cfi_cmdset_0002.c +++ b/drivers/mtd/cfi_cmdset_0002.c @@ -18,7 +18,7 @@ #include <asm/byteorder.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/mtd/map.h> #include <linux/mtd/cfi.h> diff --git a/drivers/mtd/cfi_probe.c b/drivers/mtd/cfi_probe.c index e46d26f568eb..f44ba58173ee 100644 --- a/drivers/mtd/cfi_probe.c +++ b/drivers/mtd/cfi_probe.c @@ -11,7 +11,7 @@ #include <asm/io.h> #include <asm/byteorder.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mtd/map.h> #include <linux/mtd/cfi.h> diff --git a/drivers/mtd/doc1000.c b/drivers/mtd/doc1000.c index 584745359dbd..a681652c0c22 100644 --- a/drivers/mtd/doc1000.c +++ b/drivers/mtd/doc1000.c @@ -12,7 +12,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/major.h> diff --git a/drivers/mtd/doc2000.c b/drivers/mtd/doc2000.c index 22ef68e62fda..4957fcd6695f 100644 --- a/drivers/mtd/doc2000.c +++ b/drivers/mtd/doc2000.c @@ -15,7 +15,7 @@ #include <linux/miscdevice.h> #include <linux/pci.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/types.h> diff --git a/drivers/mtd/doc2001.c b/drivers/mtd/doc2001.c index 79aa3630dbc3..d80143783a7c 100644 --- a/drivers/mtd/doc2001.c +++ b/drivers/mtd/doc2001.c @@ -15,7 +15,7 @@ #include <linux/miscdevice.h> #include <linux/pci.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/types.h> diff --git a/drivers/mtd/docecc.c b/drivers/mtd/docecc.c index cddc968c0d49..c10ff2b88bcc 100644 --- a/drivers/mtd/docecc.c +++ b/drivers/mtd/docecc.c @@ -31,7 +31,7 @@ #include <linux/miscdevice.h> #include <linux/pci.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/types.h> diff --git a/drivers/mtd/docprobe.c b/drivers/mtd/docprobe.c index 37fec2a0ce3f..9f5ba083bdb5 100644 --- a/drivers/mtd/docprobe.c +++ b/drivers/mtd/docprobe.c @@ -50,7 +50,7 @@ #include <linux/miscdevice.h> #include <linux/pci.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/types.h> diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c index 72bd03297728..aaa948b647c4 100644 --- a/drivers/mtd/ftl.c +++ b/drivers/mtd/ftl.c @@ -68,7 +68,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/major.h> diff --git a/drivers/mtd/map_ram.c b/drivers/mtd/map_ram.c index 00c009d7fcb9..1a4e5a06a761 100644 --- a/drivers/mtd/map_ram.c +++ b/drivers/mtd/map_ram.c @@ -10,7 +10,7 @@ #include <asm/io.h> #include <asm/byteorder.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mtd/map.h> diff --git a/drivers/mtd/map_rom.c b/drivers/mtd/map_rom.c index c976c7ecf54f..455cb99fd97a 100644 --- a/drivers/mtd/map_rom.c +++ b/drivers/mtd/map_rom.c @@ -10,7 +10,7 @@ #include <asm/io.h> #include <asm/byteorder.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mtd/map.h> diff --git a/drivers/mtd/mixmem.c b/drivers/mtd/mixmem.c index 8326f864b975..18fc4e2d7a70 100644 --- a/drivers/mtd/mixmem.c +++ b/drivers/mtd/mixmem.c @@ -11,7 +11,7 @@ */ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <asm/io.h> #include <linux/init.h> diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c index d1344468bdb1..5ab6437c1312 100644 --- a/drivers/mtd/mtdblock.c +++ b/drivers/mtd/mtdblock.c @@ -10,7 +10,7 @@ #include <linux/types.h> #include <linux/module.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mtd/mtd.h> #define MAJOR_NR MTD_BLOCK_MAJOR diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index fed9e37d7cbf..8a866f28dd8c 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c @@ -12,7 +12,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/mtd/mtd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #ifdef CONFIG_DEVFS_FS #include <linux/devfs_fs_kernel.h> diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index 8c30838ba4d2..df58ba446c3c 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -11,7 +11,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/major.h> diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c index 0135be39ea43..7101f7b2bdae 100644 --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c @@ -11,7 +11,7 @@ #include <linux/module.h> #include <linux/types.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/list.h> #include <linux/mtd/mtd.h> diff --git a/drivers/mtd/mtdram.c b/drivers/mtd/mtdram.c index bac119919429..d3a33495d628 100644 --- a/drivers/mtd/mtdram.c +++ b/drivers/mtd/mtdram.c @@ -12,7 +12,7 @@ #include <linux/config.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/mtd/compatmac.h> #include <linux/mtd/mtd.h> diff --git a/drivers/mtd/nftl.c b/drivers/mtd/nftl.c index d7e2aeaadc34..be82bfd91fcd 100644 --- a/drivers/mtd/nftl.c +++ b/drivers/mtd/nftl.c @@ -63,7 +63,7 @@ #include <linux/miscdevice.h> #include <linux/pci.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/blkpg.h> diff --git a/drivers/mtd/nftlmount.c b/drivers/mtd/nftlmount.c index 938b62418217..72f734d98488 100644 --- a/drivers/mtd/nftlmount.c +++ b/drivers/mtd/nftlmount.c @@ -28,7 +28,7 @@ #include <linux/miscdevice.h> #include <linux/pci.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/init.h> #include <linux/mtd/mtd.h> diff --git a/drivers/mtd/octagon-5066.c b/drivers/mtd/octagon-5066.c index 70e78d7e9c03..8fa40e9e9c96 100644 --- a/drivers/mtd/octagon-5066.c +++ b/drivers/mtd/octagon-5066.c @@ -25,7 +25,7 @@ ##################################################################### */ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/init.h> #include <asm/io.h> diff --git a/drivers/mtd/pmc551.c b/drivers/mtd/pmc551.c index 55c5fe529fdd..bfdc73512051 100644 --- a/drivers/mtd/pmc551.c +++ b/drivers/mtd/pmc551.c @@ -78,7 +78,7 @@ #include <linux/sched.h> #include <linux/init.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/major.h> diff --git a/drivers/mtd/slram.c b/drivers/mtd/slram.c index 8260dd7e5a41..d2e4f8ed294c 100644 --- a/drivers/mtd/slram.c +++ b/drivers/mtd/slram.c @@ -11,7 +11,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/ptrace.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/major.h> diff --git a/drivers/mtd/vmax301.c b/drivers/mtd/vmax301.c index 007987b85e61..cab69b451869 100644 --- a/drivers/mtd/vmax301.c +++ b/drivers/mtd/vmax301.c @@ -17,7 +17,7 @@ ##################################################################### */ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/init.h> #include <asm/spinlock.h> diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c index bf17e006fda4..7565d48909d8 100644 --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c @@ -3,7 +3,7 @@ This is an extension to the Linux operating system, and is covered by the - same Gnu Public License that covers that work. + same GNU General Public License that covers that work. Copyright 1995, 1996 by Chris Beauregard (cpbeaure@undergrad.math.uwaterloo.ca) @@ -91,7 +91,7 @@ #include <linux/string.h> #include <linux/errno.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> #include <linux/delay.h> #include <linux/mca.h> @@ -148,9 +148,9 @@ sizeof(nop_cmd) = 8; #define RECV_BUFF_SIZE 1524 /* slightly oversized */ #define XMIT_BUFF_SIZE 1524 /* slightly oversized */ -#define NUM_XMIT_BUFFS 4 /* config for both, 8K and 16K shmem */ -#define NUM_RECV_BUFFS_8 1 /* config for 8K shared mem */ -#define NUM_RECV_BUFFS_16 6 /* config for 16K shared mem */ +#define NUM_XMIT_BUFFS 1 /* config for both, 8K and 16K shmem */ +#define NUM_RECV_BUFFS_8 4 /* config for 8K shared mem */ +#define NUM_RECV_BUFFS_16 9 /* config for 16K shared mem */ #if (NUM_XMIT_BUFFS == 1) #define NO_NOPCOMMANDS /* only possible with NUM_XMIT_BUFFS=1 */ @@ -197,6 +197,7 @@ struct priv { struct net_device_stats stats; unsigned long base; char *memtop; + unsigned long mapped_start; /* Start of ioremap */ volatile struct rfd_struct *rfd_last, *rfd_top, *rfd_first; volatile struct scp_struct *scp; /* volatile is important */ volatile struct iscp_struct *iscp; /* volatile is important */ @@ -303,13 +304,13 @@ static int __init check586(struct net_device *dev, unsigned long where, unsigned char *iscp_addrs[2]; int i = 0; - p->base = where + size - 0x01000000; - p->memtop = phys_to_virt(where) + size; - p->scp = (struct scp_struct *)phys_to_virt(p->base + SCP_DEFAULT_ADDRESS); + p->base = (unsigned long) bus_to_virt((unsigned long)where) + size - 0x01000000; + p->memtop = bus_to_virt((unsigned long)where) + size; + p->scp = (struct scp_struct *)(p->base + SCP_DEFAULT_ADDRESS); memset((char *) p->scp, 0, sizeof(struct scp_struct)); p->scp->sysbus = SYSBUSVAL; /* 1 = 8Bit-Bus, 0 = 16 Bit */ - iscp_addrs[0] = phys_to_virt(where); + iscp_addrs[0] = bus_to_virt((unsigned long)where); iscp_addrs[1] = (char *) p->scp - sizeof(struct iscp_struct); for (i = 0; i < 2; i++) { @@ -325,6 +326,7 @@ static int __init check586(struct net_device *dev, unsigned long where, unsigned /* apparently, you sometimes have to kick the 82586 twice... */ elmc_id_attn586(); + DELAY(1); if (p->iscp->busy) { /* i82586 clears 'busy' after successful init */ return 0; @@ -344,8 +346,8 @@ void alloc586(struct net_device *dev) elmc_id_reset586(); DELAY(2); - p->scp = (struct scp_struct *) phys_to_virt(p->base + SCP_DEFAULT_ADDRESS); - p->scb = (struct scb_struct *) phys_to_virt(dev->mem_start); + p->scp = (struct scp_struct *) (p->base + SCP_DEFAULT_ADDRESS); + p->scb = (struct scb_struct *) bus_to_virt(dev->mem_start); p->iscp = (struct iscp_struct *) ((char *) p->scp - sizeof(struct iscp_struct)); memset((char *) p->iscp, 0, sizeof(struct iscp_struct)); @@ -409,6 +411,8 @@ int __init elmc_probe(struct net_device *dev) u_char revision = 0; int i = 0; unsigned int size = 0; + int retval; + struct priv *pr; SET_MODULE_OWNER(dev); if (MCA_bus == 0) { @@ -428,18 +432,24 @@ int __init elmc_probe(struct net_device *dev) Also reject it if the card is already in use. */ - if((irq && irq != dev->irq) || (base_addr && base_addr != dev->base_addr) - || check_region(dev->base_addr,ELMC_IO_EXTENT)) { + if ((irq && irq != dev->irq) || + (base_addr && base_addr != dev->base_addr)) { slot = mca_find_adapter(ELMC_MCA_ID, slot + 1); continue; } + if (!request_region(dev->base_addr, ELMC_IO_EXTENT, dev->name)) { + slot = mca_find_adapter(ELMC_MCA_ID, slot + 1); + continue; + } + /* found what we're looking for... */ break; } /* we didn't find any 3c523 in the slots we checked for */ if (slot == MCA_NOTFOUND) { - return ((base_addr || irq) ? ENXIO : ENODEV); + retval = ((base_addr || irq) ? -ENXIO : -ENODEV); + goto err_out; } mca_set_adapter_name(slot, "3Com 3c523 Etherlink/MC"); mca_set_adapter_procfn(slot, (MCA_ProcFn) elmc_getinfo, dev); @@ -479,15 +489,14 @@ int __init elmc_probe(struct net_device *dev) break; } - request_region(dev->base_addr, ELMC_IO_EXTENT, "3c523"); - - dev->priv = (void *) kmalloc(sizeof(struct priv), GFP_KERNEL); + pr = dev->priv = kmalloc(sizeof(struct priv), GFP_KERNEL); if (dev->priv == NULL) { - return -ENOMEM; + retval = -ENOMEM; + goto err_out; } - memset((char *) dev->priv, 0, sizeof(struct priv)); + memset(pr, 0, sizeof(struct priv)); - ((struct priv *) (dev->priv))->slot = slot; + pr->slot = slot; printk(KERN_INFO "%s: 3Com 3c523 Rev 0x%x at %#lx\n", dev->name, (int) revision, dev->base_addr); @@ -513,18 +522,21 @@ int __init elmc_probe(struct net_device *dev) if (!check586(dev, dev->mem_start, size)) { printk(KERN_ERR "%s: memprobe, Can't find memory at 0x%lx!\n", dev->name, dev->mem_start); - release_region(dev->base_addr, ELMC_IO_EXTENT); - return -ENODEV; + kfree(dev->priv); + dev->priv = NULL; + retval = -ENODEV; + goto err_out; } dev->mem_end = dev->mem_start + size; /* set mem_end showed by 'ifconfig' */ - ((struct priv *) (dev->priv))->base = dev->mem_start + size - 0x01000000; + ((struct priv *) (dev->priv))->memtop = bus_to_virt(dev->mem_start) + size; + ((struct priv *) (dev->priv))->base = (unsigned long) bus_to_virt(dev->mem_start) + size - 0x01000000; alloc586(dev); elmc_id_reset586(); /* make sure it doesn't generate spurious ints */ /* set number of receive-buffs according to memsize */ - ((struct priv *) dev->priv)->num_recv_buffs = NUM_RECV_BUFFS_16; + pr->num_recv_buffs = NUM_RECV_BUFFS_16; /* dump all the assorted information */ printk(KERN_INFO "%s: IRQ %d, %sternal xcvr, memory %#lx-%#lx.\n", dev->name, @@ -563,6 +575,9 @@ int __init elmc_probe(struct net_device *dev) #endif return 0; +err_out: + release_region(dev->base_addr, ELMC_IO_EXTENT); + return retval; } /********************************************** @@ -944,9 +959,11 @@ static void elmc_rcv_int(struct net_device *dev) if (skb != NULL) { skb->dev = dev; skb_reserve(skb, 2); /* 16 byte alignment */ - memcpy(skb_put(skb, totlen), (u8 *)phys_to_virt(p->base) + (unsigned long) rbd->buffer, totlen); + skb_put(skb,totlen); + eth_copy_and_sum(skb, (char *) p->base+(unsigned long) rbd->buffer,totlen,0); skb->protocol = eth_type_trans(skb, dev); netif_rx(skb); + dev->last_rx = jiffies; p->stats.rx_packets++; p->stats.rx_bytes += totlen; } else { @@ -1086,6 +1103,7 @@ static void elmc_timeout(struct net_device *dev) static int elmc_send_packet(struct sk_buff *skb, struct net_device *dev) { int len; + int i; #ifndef NO_NOPCOMMANDS int next_nop; #endif diff --git a/drivers/net/3c523.h b/drivers/net/3c523.h index 2a4f1bfc9c15..aa67b871db0b 100644 --- a/drivers/net/3c523.h +++ b/drivers/net/3c523.h @@ -9,7 +9,7 @@ * Intel i82586 Ethernet definitions * * This is an extension to the Linux operating system, and is covered by the - * same Gnu Public License that covers that work. + * same GNU General Public License that covers that work. * * Copyright 1995 by Chris Beauregard (cpbeaure@undergrad.math.uwaterloo.ca) * diff --git a/drivers/net/de4x5.c b/drivers/net/de4x5.c index b8e1e297d562..fa894d6440cb 100644 --- a/drivers/net/de4x5.c +++ b/drivers/net/de4x5.c @@ -445,7 +445,7 @@ static const char *version = "de4x5.c:V0.545 1999/11/28 davies@maniac.ultranet.c #include <linux/ptrace.h> #include <linux/errno.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/delay.h> #include <linux/init.h> @@ -1662,6 +1662,7 @@ de4x5_interrupt(int irq, void *dev_id, struct pt_regs *regs) STOP_DE4X5; printk("%s: Fatal bus error occurred, sts=%#8x, device stopped.\n", dev->name, sts); + spin_unlock(&lp->lock); return; } } @@ -1733,6 +1734,7 @@ de4x5_rx(struct net_device *dev) netif_rx(skb); /* Update stats */ + dev->last_rx = jiffies; lp->stats.rx_packets++; lp->stats.rx_bytes += pkt_len; de4x5_local_stats(dev, skb->data, pkt_len); diff --git a/drivers/net/de4x5.h b/drivers/net/de4x5.h index 9e40adc74235..4ab3889b7d2d 100644 --- a/drivers/net/de4x5.h +++ b/drivers/net/de4x5.h @@ -2,7 +2,7 @@ Copyright 1994 Digital Equipment Corporation. This software may be used and distributed according to the terms of the - GNU Public License, incorporated herein by reference. + GNU General Public License, incorporated herein by reference. The author may be reached as davies@wanton.lkg.dec.com or Digital Equipment Corporation, 550 King Street, Littleton MA 01460. diff --git a/drivers/net/ewrk3.c b/drivers/net/ewrk3.c index 5b1726c32059..9f9b376e8e09 100644 --- a/drivers/net/ewrk3.c +++ b/drivers/net/ewrk3.c @@ -136,8 +136,6 @@ ========================================================================= */ -static const char *version = "ewrk3.c:v0.43 96/8/16 davies@maniac.ultranet.com\n"; - #include <linux/config.h> #include <linux/module.h> @@ -147,7 +145,7 @@ static const char *version = "ewrk3.c:v0.43 96/8/16 davies@maniac.ultranet.com\n #include <linux/ptrace.h> #include <linux/errno.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> #include <linux/delay.h> #include <linux/init.h> @@ -167,6 +165,9 @@ static const char *version = "ewrk3.c:v0.43 96/8/16 davies@maniac.ultranet.com\n #include "ewrk3.h" +static const char version[] __initdata = +"ewrk3.c:v0.43a 2001/02/04 davies@maniac.ultranet.com\n"; + #ifdef EWRK3_DEBUG static int ewrk3_debug = EWRK3_DEBUG; #else @@ -273,9 +274,9 @@ struct ewrk3_private { u_char mPage; /* Maximum 2kB Page number */ u_char lemac; /* Chip rev. level */ u_char hard_strapped; /* Don't allow a full open */ - u_char lock; /* Lock the page register */ u_char txc; /* Transmit cut through */ u_char *mctbl; /* Pointer to the multicast table */ + spinlock_t hw_lock; }; /* @@ -530,6 +531,7 @@ ewrk3_hw_init(struct net_device *dev, u_long iobase) lp->shmem_length = shmem_length; lp->lemac = lemac; lp->hard_strapped = hard_strapped; + spin_lock_init(&lp->hw_lock); lp->mPage = 64; if (cmr & CMR_DRAM) @@ -715,8 +717,6 @@ static void ewrk3_init(struct net_device *dev) outb(page, EWRK3_FMQ); /* to the Free Memory Queue */ } - lp->lock = 0; /* Ensure there are no locks */ - START_EWRK3; /* Enable the TX and/or RX */ } @@ -760,111 +760,118 @@ static void ewrk3_timeout(struct net_device *dev) /* ** Writes a socket buffer to the free page queue */ -static int ewrk3_queue_pkt(struct sk_buff *skb, struct net_device *dev) +static int ewrk3_queue_pkt (struct sk_buff *skb, struct net_device *dev) { struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv; u_long iobase = dev->base_addr; - int status = 0; + u_long buf = 0; u_char icr; + u_char page; - netif_stop_queue(dev); -#ifdef CONFIG_SMP -#error "This needs spinlocks" -#endif - DISABLE_IRQs; /* So that the page # remains correct */ + spin_lock_irq (&lp->hw_lock); + DISABLE_IRQs; + + /* if no resources available, exit, request packet be queued */ + if (inb (EWRK3_FMQC) == 0) { + printk (KERN_WARNING "%s: ewrk3_queue_pkt(): No free resources...\n", + dev->name); + printk (KERN_WARNING "%s: ewrk3_queue_pkt(): CSR: %02x ICR: %02x FMQC: %02x\n", + dev->name, inb (EWRK3_CSR), inb (EWRK3_ICR), + inb (EWRK3_FMQC)); + goto err_out; + } /* - ** Get a free page from the FMQ when resources are available + ** Get a free page from the FMQ */ - if (inb(EWRK3_FMQC) > 0) - { - u_long buf = 0; - u_char page; + if ((page = inb (EWRK3_FMQ)) >= lp->mPage) { + printk ("ewrk3_queue_pkt(): Invalid free memory page (%d).\n", + (u_char) page); + goto err_out; + } - if ((page = inb(EWRK3_FMQ)) < lp->mPage) { - /* - ** Set up shared memory window and pointer into the window - */ - while (test_and_set_bit(0, (void *) &lp->lock) != 0); /* Wait for lock to free */ - if (lp->shmem_length == IO_ONLY) { - outb(page, EWRK3_IOPR); - } else if (lp->shmem_length == SHMEM_2K) { - buf = lp->shmem_base; - outb(page, EWRK3_MPR); - } else if (lp->shmem_length == SHMEM_32K) { - buf = ((((short) page << 11) & 0x7800) + lp->shmem_base); - outb((page >> 4), EWRK3_MPR); - } else if (lp->shmem_length == SHMEM_64K) { - buf = ((((short) page << 11) & 0xf800) + lp->shmem_base); - outb((page >> 5), EWRK3_MPR); - } else { - status = -1; - printk(KERN_ERR "%s: Oops - your private data area is hosed!\n", dev->name); - } - if (!status) { - /* - ** Set up the buffer control structures and copy the data from - ** the socket buffer to the shared memory . - */ - if (lp->shmem_length == IO_ONLY) { - int i; - u_char *p = skb->data; - outb((char) (TCR_QMODE | TCR_PAD | TCR_IFC), EWRK3_DATA); - outb((char) (skb->len & 0xff), EWRK3_DATA); - outb((char) ((skb->len >> 8) & 0xff), EWRK3_DATA); - outb((char) 0x04, EWRK3_DATA); - for (i = 0; i < skb->len; i++) { - outb(*p++, EWRK3_DATA); - } - outb(page, EWRK3_TQ); /* Start sending pkt */ - } else { - isa_writeb((char) (TCR_QMODE | TCR_PAD | TCR_IFC), buf); /* ctrl byte */ - buf += 1; - isa_writeb((char) (skb->len & 0xff), buf); /* length (16 bit xfer) */ - buf += 1; - if (lp->txc) { - isa_writeb((char) (((skb->len >> 8) & 0xff) | XCT), buf); - buf += 1; - isa_writeb(0x04, buf); /* index byte */ - buf += 1; - isa_writeb(0x00, (buf + skb->len)); /* Write the XCT flag */ - isa_memcpy_toio(buf, skb->data, PRELOAD); /* Write PRELOAD bytes */ - outb(page, EWRK3_TQ); /* Start sending pkt */ - isa_memcpy_toio(buf + PRELOAD, skb->data + PRELOAD, skb->len - PRELOAD); - isa_writeb(0xff, (buf + skb->len)); /* Write the XCT flag */ - } else { - isa_writeb((char) ((skb->len >> 8) & 0xff), buf); - buf += 1; - isa_writeb(0x04, buf); /* index byte */ - buf += 1; - isa_memcpy_toio(buf, skb->data, skb->len); /* Write data bytes */ - outb(page, EWRK3_TQ); /* Start sending pkt */ - } - } + /* + ** Set up shared memory window and pointer into the window + */ + if (lp->shmem_length == IO_ONLY) { + outb (page, EWRK3_IOPR); + } else if (lp->shmem_length == SHMEM_2K) { + buf = lp->shmem_base; + outb (page, EWRK3_MPR); + } else if (lp->shmem_length == SHMEM_32K) { + buf = ((((short) page << 11) & 0x7800) + lp->shmem_base); + outb ((page >> 4), EWRK3_MPR); + } else if (lp->shmem_length == SHMEM_64K) { + buf = ((((short) page << 11) & 0xf800) + lp->shmem_base); + outb ((page >> 5), EWRK3_MPR); + } else { + printk (KERN_ERR "%s: Oops - your private data area is hosed!\n", + dev->name); + BUG (); + } - lp->stats.tx_bytes += skb->len; - dev->trans_start = jiffies; - dev_kfree_skb(skb); - } else { /* return unused page to the free memory queue */ - outb(page, EWRK3_FMQ); - } - lp->lock = 0; /* unlock the page register */ - } else { - printk("ewrk3_queue_pkt(): Invalid free memory page (%d).\n", - (u_char) page); + /* + ** Set up the buffer control structures and copy the data from + ** the socket buffer to the shared memory . + */ + if (lp->shmem_length == IO_ONLY) { + int i; + u_char *p = skb->data; + outb ((char) (TCR_QMODE | TCR_PAD | TCR_IFC), EWRK3_DATA); + outb ((char) (skb->len & 0xff), EWRK3_DATA); + outb ((char) ((skb->len >> 8) & 0xff), EWRK3_DATA); + outb ((char) 0x04, EWRK3_DATA); + for (i = 0; i < skb->len; i++) { + outb (*p++, EWRK3_DATA); } + outb (page, EWRK3_TQ); /* Start sending pkt */ } else { - printk(KERN_WARNING "%s: ewrk3_queue_pkt(): No free resources...\n", dev->name); - printk(KERN_WARNING "%s: ewrk3_queue_pkt(): CSR: %02x ICR: %02x FMQC: %02x\n", dev->name, inb(EWRK3_CSR), inb(EWRK3_ICR), inb(EWRK3_FMQC)); + isa_writeb ((char) (TCR_QMODE | TCR_PAD | TCR_IFC), buf); /* ctrl byte */ + buf += 1; + isa_writeb ((char) (skb->len & 0xff), buf); /* length (16 bit xfer) */ + buf += 1; + if (lp->txc) { + isa_writeb ((char) + (((skb->len >> 8) & 0xff) | XCT), buf); + buf += 1; + isa_writeb (0x04, buf); /* index byte */ + buf += 1; + isa_writeb (0x00, (buf + skb->len)); /* Write the XCT flag */ + isa_memcpy_toio (buf, skb->data, PRELOAD); /* Write PRELOAD bytes */ + outb (page, EWRK3_TQ); /* Start sending pkt */ + isa_memcpy_toio (buf + PRELOAD, + skb->data + PRELOAD, + skb->len - PRELOAD); + isa_writeb (0xff, (buf + skb->len)); /* Write the XCT flag */ + } else { + isa_writeb ((char) + ((skb->len >> 8) & 0xff), buf); + buf += 1; + isa_writeb (0x04, buf); /* index byte */ + buf += 1; + isa_memcpy_toio (buf, skb->data, skb->len); /* Write data bytes */ + outb (page, EWRK3_TQ); /* Start sending pkt */ + } } - /* Check for free resources: clear 'tbusy' if there are some */ - if (inb(EWRK3_FMQC) > 0) { - netif_wake_queue(dev); - } ENABLE_IRQs; - return status; + spin_unlock_irq (&lp->hw_lock); + + lp->stats.tx_bytes += skb->len; + dev->trans_start = jiffies; + dev_kfree_skb (skb); + + /* Check for free resources: stop Tx queue if there are none */ + if (inb (EWRK3_FMQC) == 0) + netif_stop_queue (dev); + + return 0; + +err_out: + ENABLE_IRQs; + spin_unlock_irq (&lp->hw_lock); + return 1; } /* @@ -886,6 +893,7 @@ static void ewrk3_interrupt(int irq, void *dev_id, struct pt_regs *regs) /* ** Mask the EWRK3 board interrupts and turn on the LED */ + spin_lock(&lp->hw_lock); DISABLE_IRQs; cr = inb(EWRK3_CR); @@ -917,6 +925,7 @@ static void ewrk3_interrupt(int irq, void *dev_id, struct pt_regs *regs) cr &= ~CR_LED; outb(cr, EWRK3_CR); ENABLE_IRQs; + spin_unlock(&lp->hw_lock); } static int ewrk3_rx(struct net_device *dev) @@ -924,23 +933,12 @@ static int ewrk3_rx(struct net_device *dev) struct ewrk3_private *lp = (struct ewrk3_private *) dev->priv; u_long iobase = dev->base_addr; int i, status = 0; - u_char page, tmpPage = 0, tmpLock = 0; + u_char page; u_long buf = 0; while (inb(EWRK3_RQC) && !status) { /* Whilst there's incoming data */ if ((page = inb(EWRK3_RQ)) < lp->mPage) { /* Get next entry's buffer page */ /* - ** Preempt any process using the current page register. Check for - ** an existing lock to reduce time taken in I/O transactions. - */ - if ((tmpLock = test_and_set_bit(0, (void *) &lp->lock)) == 1) { /* Assert lock */ - if (lp->shmem_length == IO_ONLY) { /* Get existing page */ - tmpPage = inb(EWRK3_IOPR); - } else { - tmpPage = inb(EWRK3_MPR); - } - } - /* ** Set up shared memory window and pointer into the window */ if (lp->shmem_length == IO_ONLY) { @@ -1045,15 +1043,6 @@ static int ewrk3_rx(struct net_device *dev) ** Return the received buffer to the free memory queue */ outb(page, EWRK3_FMQ); - - if (tmpLock) { /* If a lock was preempted */ - if (lp->shmem_length == IO_ONLY) { /* Replace old page */ - outb(tmpPage, EWRK3_IOPR); - } else { - outb(tmpPage, EWRK3_MPR); - } - } - lp->lock = 0; /* Unlock the page register */ } else { printk("ewrk3_rx(): Illegal page number, page %d\n", page); printk("ewrk3_rx(): CSR: %02x ICR: %02x FMQC: %02x\n", inb(EWRK3_CSR), inb(EWRK3_ICR), inb(EWRK3_FMQC)); @@ -1191,7 +1180,7 @@ static void SetMulticastFilter(struct net_device *dev) u16 hashcode; s32 crc, poly = CRC_POLYNOMIAL_LE; - while (test_and_set_bit(0, (void *) &lp->lock) != 0); /* Wait for lock to free */ + spin_lock_irq(&lp->hw_lock); if (lp->shmem_length == IO_ONLY) { outb(0, EWRK3_IOPR); @@ -1258,9 +1247,7 @@ static void SetMulticastFilter(struct net_device *dev) } } - lp->lock = 0; /* Unlock the page register */ - - return; + spin_unlock_irq(&lp->hw_lock); } /* @@ -1710,24 +1697,22 @@ static int ewrk3_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) break; case EWRK3_GET_MCA: /* Get the multicast address table */ - while (test_and_set_bit(0, (void *) &lp->lock) != 0); /* Wait for lock to free */ - if (lp->shmem_length == IO_ONLY) { - outb(0, EWRK3_IOPR); - outw(PAGE0_HTE, EWRK3_PIR1); - for (i = 0; i < (HASH_TABLE_LEN >> 3); i++) { - tmp.addr[i] = inb(EWRK3_DATA); - } - } else { - outb(0, EWRK3_MPR); - isa_memcpy_fromio(tmp.addr, lp->shmem_base + PAGE0_HTE, (HASH_TABLE_LEN >> 3)); - } - ioc->len = (HASH_TABLE_LEN >> 3); - if (copy_to_user(ioc->data, tmp.addr, ioc->len)) { - status = -EFAULT; - break; + spin_lock_irq(&lp->hw_lock); + if (lp->shmem_length == IO_ONLY) { + outb(0, EWRK3_IOPR); + outw(PAGE0_HTE, EWRK3_PIR1); + for (i = 0; i < (HASH_TABLE_LEN >> 3); i++) { + tmp.addr[i] = inb(EWRK3_DATA); } + } else { + outb(0, EWRK3_MPR); + isa_memcpy_fromio(tmp.addr, lp->shmem_base + PAGE0_HTE, (HASH_TABLE_LEN >> 3)); + } + spin_unlock_irq(&lp->hw_lock); - lp->lock = 0; /* Unlock the page register */ + ioc->len = (HASH_TABLE_LEN >> 3); + if (copy_to_user(ioc->data, tmp.addr, ioc->len)) + status = -EFAULT; break; case EWRK3_SET_MCA: /* Set a multicast address */ diff --git a/drivers/net/ne2.c b/drivers/net/ne2.c index 9bb252dc5c5b..f9873570a80d 100644 --- a/drivers/net/ne2.c +++ b/drivers/net/ne2.c @@ -4,7 +4,7 @@ modified by Wim Dumon (Apr 1996) This software may be used and distributed according to the terms - of the GNU Public License, incorporated herein by reference. + of the GNU General Public License, incorporated herein by reference. The author may be reached as wimpie@linux.cc.kuleuven.ac.be @@ -45,6 +45,9 @@ Mon Nov 16 15:28:23 CET 1998 (Wim Dumon) - pass 'dev' as last parameter of request_irq in stead of 'NULL' + + Wed Feb 7 21:24:00 CET 2001 (Alfred Arnold) + - added support for the D-Link DE-320CT * WARNING ------- @@ -67,7 +70,7 @@ static const char *version = "ne2.c:v0.91 Nov 16 1998 Wim Dumon <wimpie@kotnet.o #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/in.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <asm/system.h> #include <asm/bitops.h> @@ -114,6 +117,11 @@ static unsigned int addresses[7] __initdata = {0x1000, 0x2020, 0x8020, 0xa0a0, 0xb0b0, 0xc0c0, 0xc3d0}; static int irqs[4] __initdata = {3, 4, 5, 9}; +/* From the D-Link ADF file: */ +static unsigned int dlink_addresses[4]= + {0x300, 0x320, 0x340, 0x360}; +static int dlink_irqs[8] = {3, 4, 5, 9, 10, 11, 14, 15}; + struct ne2_adapters_t { unsigned int id; char *name; @@ -123,6 +131,7 @@ static struct ne2_adapters_t ne2_adapters[] __initdata = { { 0x6354, "Arco Ethernet Adapter AE/2" }, { 0x70DE, "Compex ENET-16 MC/P" }, { 0x7154, "Novell Ethernet Adapter NE/2" }, + { 0x56ea, "D-Link DE-320CT" }, { 0x0000, NULL } }; @@ -143,6 +152,98 @@ static void ne_block_output(struct net_device *dev, const int count, /* + * special code to read the DE-320's MAC address EEPROM. In contrast to a + * standard NE design, this is a serial EEPROM (93C46) that has to be read + * bit by bit. The EEPROM cotrol port at base + 0x1e has the following + * layout: + * + * Bit 0 = Data out (read from EEPROM) + * Bit 1 = Data in (write to EEPROM) + * Bit 2 = Clock + * Bit 3 = Chip Select + * Bit 7 = ~50 kHz clock for defined delays + * + */ + +static void dlink_put_eeprom(unsigned char value, unsigned int addr) +{ + int z; + unsigned char v1, v2; + + /* write the value to the NIC EEPROM register */ + + outb(value, addr + 0x1e); + + /* now wait the clock line to toggle twice. Effectively, we are + waiting (at least) for one clock cycle */ + + for (z = 0; z < 2; z++) { + do { + v1 = inb(addr + 0x1e); + v2 = inb(addr + 0x1e); + } + while (!((v1 ^ v2) & 0x80)); + } +} + +static void dlink_send_eeprom_bit(unsigned int bit, unsigned int addr) +{ + /* shift data bit into correct position */ + + bit = bit << 1; + + /* write value, keep clock line high for two cycles */ + + dlink_put_eeprom(0x09 | bit, addr); + dlink_put_eeprom(0x0d | bit, addr); + dlink_put_eeprom(0x0d | bit, addr); + dlink_put_eeprom(0x09 | bit, addr); +} + +static void dlink_send_eeprom_word(unsigned int value, unsigned int len, unsigned int addr) +{ + int z; + + /* adjust bits so that they are left-aligned in a 16-bit-word */ + + value = value << (16 - len); + + /* shift bits out to the EEPROM */ + + for (z = 0; z < len; z++) { + dlink_send_eeprom_bit((value & 0x8000) >> 15, addr); + value = value << 1; + } +} + +static unsigned int dlink_get_eeprom(unsigned int eeaddr, unsigned int addr) +{ + int z; + unsigned int value = 0; + + /* pull the CS line low for a moment. This resets the EEPROM- + internal logic, and makes it ready for a new command. */ + + dlink_put_eeprom(0x01, addr); + dlink_put_eeprom(0x09, addr); + + /* send one start bit, read command (1 - 0), plus the address to + the EEPROM */ + + dlink_send_eeprom_word(0x0180 | (eeaddr & 0x3f), 9, addr); + + /* get the data word. We clock by sending 0s to the EEPROM, which + get ignored during the read process */ + + for (z = 0; z < 16; z++) { + dlink_send_eeprom_bit(0, addr); + value = (value << 1) | (inb(addr + 0x1e) & 0x01); + } + + return value; +} + +/* * Note that at boot, this probe only picks up one card at a time. */ @@ -221,12 +322,20 @@ static int __init ne2_probe1(struct net_device *dev, int slot) return -ENODEV; } - i = (POS & 0xE)>>1; - /* printk("Halleluja sdog, als er na de pijl een 1 staat is 1 - 1 == 0" - " en zou het moeten werken -> %d\n", i); - The above line was for remote testing, thanx to sdog ... */ - base_addr = addresses[i - 1]; - irq = irqs[(POS & 0x60)>>5]; + /* handle different POS register structure for D-Link card */ + + if (mca_read_stored_pos(slot, 0) == 0xea) { + base_addr = dlink_addresses[(POS >> 5) & 0x03]; + irq = dlink_irqs[(POS >> 2) & 0x07]; + } + else { + i = (POS & 0xE)>>1; + /* printk("Halleluja sdog, als er na de pijl een 1 staat is 1 - 1 == 0" + " en zou het moeten werken -> %d\n", i); + The above line was for remote testing, thanx to sdog ... */ + base_addr = addresses[i - 1]; + irq = irqs[(POS & 0x60)>>5]; + } if (!request_region(base_addr, NE_IO_EXTENT, dev->name)) return -EBUSY; @@ -309,6 +418,20 @@ static int __init ne2_probe1(struct net_device *dev, int slot) SA_prom[i] = inb(base_addr + NE_DATAPORT); } + /* I don't know whether the previous sequence includes the general + board reset procedure, so better don't omit it and just overwrite + the garbage read from a DE-320 with correct stuff. */ + + if (mca_read_stored_pos(slot, 0) == 0xea) { + unsigned int v; + + for (i = 0; i < 3; i++) { + v = dlink_get_eeprom(i, base_addr); + SA_prom[(i << 1) ] = v & 0xff; + SA_prom[(i << 1) + 1] = (v >> 8) & 0xff; + } + } + start_page = NESM_START_PG; stop_page = NESM_STOP_PG; diff --git a/drivers/parport/init.c b/drivers/parport/init.c index 90280e37176c..c7efbe5f4f32 100644 --- a/drivers/parport/init.c +++ b/drivers/parport/init.c @@ -15,7 +15,7 @@ #include <linux/parport.h> #include <linux/errno.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #ifndef MODULE diff --git a/drivers/parport/parport_arc.c b/drivers/parport/parport_arc.c index 69509dc63058..0da0e6a23d20 100644 --- a/drivers/parport/parport_arc.c +++ b/drivers/parport/parport_arc.c @@ -20,7 +20,7 @@ #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/parport.h> #include <asm/ptrace.h> diff --git a/drivers/parport/parport_gsc.c b/drivers/parport/parport_gsc.c index 155f8be56254..6210a524ddc4 100644 --- a/drivers/parport/parport_gsc.c +++ b/drivers/parport/parport_gsc.c @@ -27,7 +27,7 @@ #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/sysctl.h> diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index 3f8dff08879a..2bd9e7e76cb3 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c @@ -48,7 +48,7 @@ #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/sysctl.h> diff --git a/drivers/parport/parport_sunbpp.c b/drivers/parport/parport_sunbpp.c index 6cafbc11a289..8ca85ad2bbb8 100644 --- a/drivers/parport/parport_sunbpp.c +++ b/drivers/parport/parport_sunbpp.c @@ -22,7 +22,7 @@ #include <linux/errno.h> #include <linux/ioport.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/parport.h> diff --git a/drivers/parport/procfs.c b/drivers/parport/procfs.c index b82b4e2f255b..ee37ca229d64 100644 --- a/drivers/parport/procfs.c +++ b/drivers/parport/procfs.c @@ -16,7 +16,7 @@ #include <linux/config.h> #include <linux/errno.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/parport.h> #include <linux/ctype.h> #include <linux/sysctl.h> diff --git a/drivers/parport/share.c b/drivers/parport/share.c index ec167ece19dc..03c0f5c0716c 100644 --- a/drivers/parport/share.c +++ b/drivers/parport/share.c @@ -26,7 +26,7 @@ #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include <linux/kmod.h> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index a6dc39f437ae..eff8fb3a2415 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -16,7 +16,7 @@ #include <linux/pci.h> #include <linux/string.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/spinlock.h> #include <linux/pm.h> diff --git a/drivers/pcmcia/bulkmem.c b/drivers/pcmcia/bulkmem.c index 232ab5ea551c..681102c9293e 100644 --- a/drivers/pcmcia/bulkmem.c +++ b/drivers/pcmcia/bulkmem.c @@ -37,7 +37,7 @@ #include <linux/kernel.h> #include <linux/string.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/sched.h> #include <linux/timer.h> diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c index 3a83b10c8dc0..642ea9d269ae 100644 --- a/drivers/pcmcia/cardbus.c +++ b/drivers/pcmcia/cardbus.c @@ -51,7 +51,7 @@ #include <linux/module.h> #include <linux/kernel.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/pci.h> #include <linux/ioport.h> diff --git a/drivers/pcmcia/cb_enabler.c b/drivers/pcmcia/cb_enabler.c index a4d81a65e2ea..5faf3e40814d 100644 --- a/drivers/pcmcia/cb_enabler.c +++ b/drivers/pcmcia/cb_enabler.c @@ -43,7 +43,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> diff --git a/drivers/pcmcia/cistpl.c b/drivers/pcmcia/cistpl.c index a177ca207953..703d030258c0 100644 --- a/drivers/pcmcia/cistpl.c +++ b/drivers/pcmcia/cistpl.c @@ -40,7 +40,7 @@ #include <linux/major.h> #include <linux/errno.h> #include <linux/timer.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/sched.h> #include <linux/pci.h> diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index 331c1b192af7..4361866f21ea 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c @@ -38,7 +38,7 @@ #include <linux/string.h> #include <linux/major.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/sched.h> #include <linux/timer.h> diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index 288f4b76ee17..0bc8efe007ed 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c @@ -38,7 +38,7 @@ #include <linux/major.h> #include <linux/string.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/fcntl.h> #include <linux/sched.h> diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c index b09e1182fff3..7326b6329872 100644 --- a/drivers/pcmcia/i82365.c +++ b/drivers/pcmcia/i82365.c @@ -41,7 +41,7 @@ #include <linux/errno.h> #include <linux/timer.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/ioport.h> #include <linux/delay.h> diff --git a/drivers/pcmcia/rsrc_mgr.c b/drivers/pcmcia/rsrc_mgr.c index 4e06af9c519c..02f605cc1d98 100644 --- a/drivers/pcmcia/rsrc_mgr.c +++ b/drivers/pcmcia/rsrc_mgr.c @@ -40,7 +40,7 @@ #include <linux/kernel.h> #include <linux/errno.h> #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/timer.h> #include <asm/irq.h> diff --git a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c index a4d43e168543..8c2aedbbf6f4 100644 --- a/drivers/pcmcia/tcic.c +++ b/drivers/pcmcia/tcic.c @@ -45,7 +45,7 @@ #include <linux/kernel.h> #include <linux/errno.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/timer.h> #include <linux/ioport.h> #include <linux/delay.h> diff --git a/drivers/pnp/isapnp.c b/drivers/pnp/isapnp.c index 7256544ff54c..e2fc2de63381 100644 --- a/drivers/pnp/isapnp.c +++ b/drivers/pnp/isapnp.c @@ -31,7 +31,7 @@ #include <linux/errno.h> #include <linux/ioport.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <asm/io.h> #include <asm/dma.h> diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index a48213aea270..7ef7904ba228 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -17,7 +17,7 @@ #include <linux/tqueue.h> #include <linux/timer.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/genhd.h> #include <linux/devfs_fs_kernel.h> #include <linux/hdreg.h> diff --git a/drivers/s390/block/dasd_ccwstuff.c b/drivers/s390/block/dasd_ccwstuff.c index 4f666da284e1..024eb0997e1e 100644 --- a/drivers/s390/block/dasd_ccwstuff.c +++ b/drivers/s390/block/dasd_ccwstuff.c @@ -7,7 +7,7 @@ #include <linux/stddef.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/dasd.h> #include <asm/atomic.h> diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index 30e41f8157c3..2e7cbb15c57f 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c @@ -12,7 +12,7 @@ #include <linux/module.h> #endif /* MODULE */ -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/dasd.h> #include <asm/io.h> diff --git a/drivers/s390/block/mdisk.c b/drivers/s390/block/mdisk.c index f485cb668f82..b5ceef46aeb0 100644 --- a/drivers/s390/block/mdisk.c +++ b/drivers/s390/block/mdisk.c @@ -21,7 +21,7 @@ char kernel_version [] = UTS_RELEASE; #include <linux/module.h> #include <linux/sched.h> #include <linux/kernel.h> /* printk() */ -#include <linux/malloc.h> /* kmalloc() */ +#include <linux/slab.h> /* kmalloc() */ #include <linux/vmalloc.h> /* vmalloc() */ #include <linux/fs.h> /* everything... */ #include <linux/errno.h> /* error codes */ diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c index 10a43856c213..ee48a889e506 100644 --- a/drivers/s390/char/con3215.c +++ b/drivers/s390/char/con3215.c @@ -16,7 +16,7 @@ #include <linux/console.h> #include <linux/interrupt.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/bootmem.h> #include <asm/io.h> #include <asm/ebcdic.h> diff --git a/drivers/s390/net/ctc.c b/drivers/s390/net/ctc.c index 699eaba377dd..9bb011d4766b 100644 --- a/drivers/s390/net/ctc.c +++ b/drivers/s390/net/ctc.c @@ -46,7 +46,7 @@ #include <linux/version.h> #include <linux/init.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <linux/types.h> #include <linux/interrupt.h> diff --git a/drivers/s390/net/iucv.c b/drivers/s390/net/iucv.c index b8b365753d93..8bf00246d8ff 100644 --- a/drivers/s390/net/iucv.c +++ b/drivers/s390/net/iucv.c @@ -20,7 +20,7 @@ #include <linux/version.h> #include <linux/sched.h> #include <linux/kernel.h> /* printk() */ -#include <linux/malloc.h> /* kmalloc() */ +#include <linux/slab.h> /* kmalloc() */ #include <linux/errno.h> /* error codes */ #include <linux/types.h> /* size_t */ #include <linux/interrupt.h> /* mark_bh */ diff --git a/drivers/sbus/audio/amd7930.c b/drivers/sbus/audio/amd7930.c index 1ddfb5017cb0..0565189fd1cf 100644 --- a/drivers/sbus/audio/amd7930.c +++ b/drivers/sbus/audio/amd7930.c @@ -88,7 +88,7 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/interrupt.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/version.h> #include <linux/soundcard.h> diff --git a/drivers/sbus/audio/audio.c b/drivers/sbus/audio/audio.c index 5062a4300b0c..0c323700fc32 100644 --- a/drivers/sbus/audio/audio.c +++ b/drivers/sbus/audio/audio.c @@ -1,4 +1,4 @@ -/* $Id: audio.c,v 1.56 2000/10/19 00:50:02 davem Exp $ +/* $Id: audio.c,v 1.57 2001/02/02 08:36:55 davem Exp $ * drivers/sbus/audio/audio.c * * Copyright 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu) @@ -28,13 +28,13 @@ #include <linux/mm.h> #include <linux/tqueue.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> #include <linux/init.h> #include <linux/soundcard.h> #include <linux/version.h> #include <linux/devfs_fs_kernel.h> -#include <asm/delay.h> +#include <linux/delay.h> #include <asm/pgtable.h> #include <asm/audioio.h> @@ -511,7 +511,7 @@ static int sparcaudio_mixer_ioctl(struct inode * inode, struct file * file, m = drv->ops->get_input_balance(drv); i = OSS_TO_GAIN(k); j = OSS_TO_BAL(k); - oprintk((" for stereo to to %d (bal %d):", i, j)); + oprintk((" for stereo to do %d (bal %d):", i, j)); if (drv->ops->set_input_volume) drv->ops->set_input_volume(drv, i); if (drv->ops->set_input_balance) diff --git a/drivers/sbus/audio/cs4231.c b/drivers/sbus/audio/cs4231.c index e155a73b47fd..af898c943012 100644 --- a/drivers/sbus/audio/cs4231.c +++ b/drivers/sbus/audio/cs4231.c @@ -22,7 +22,7 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/interrupt.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/soundcard.h> diff --git a/drivers/sbus/audio/dbri.c b/drivers/sbus/audio/dbri.c index 665bb4b31812..219c2f20fb47 100644 --- a/drivers/sbus/audio/dbri.c +++ b/drivers/sbus/audio/dbri.c @@ -1,4 +1,4 @@ -/* $Id: dbri.c,v 1.23 2001/01/08 04:19:16 davem Exp $ +/* $Id: dbri.c,v 1.24 2001/02/02 08:36:55 davem Exp $ * drivers/sbus/audio/dbri.c * * Copyright (C) 1997 Rudolf Koenig (rfkoenig@immd4.informatik.uni-erlangen.de) @@ -47,14 +47,14 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/interrupt.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> +#include <linux/delay.h> #include <asm/openprom.h> #include <asm/oplib.h> #include <asm/system.h> #include <asm/irq.h> #include <asm/io.h> -#include <asm/delay.h> #include <asm/sbus.h> #include <asm/pgtable.h> diff --git a/drivers/sbus/audio/dmy.c b/drivers/sbus/audio/dmy.c index 39753774d480..1ba353a4579f 100644 --- a/drivers/sbus/audio/dmy.c +++ b/drivers/sbus/audio/dmy.c @@ -13,7 +13,7 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/interrupt.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/soundcard.h> #include <linux/delay.h> diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index e1de7a680baa..63bc05487e4b 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -25,7 +25,7 @@ #include <linux/init.h> #include <linux/miscdevice.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <asm/ebus.h> #include <asm/uaccess.h> diff --git a/drivers/sbus/char/flash.c b/drivers/sbus/char/flash.c index c6c927712c93..139e0ae11788 100644 --- a/drivers/sbus/char/flash.c +++ b/drivers/sbus/char/flash.c @@ -9,7 +9,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/poll.h> #include <linux/init.h> diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c index 8faec19dd9d9..21e1a7552c34 100644 --- a/drivers/sbus/char/jsflash.c +++ b/drivers/sbus/char/jsflash.c @@ -30,7 +30,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/poll.h> #include <linux/init.h> diff --git a/drivers/sbus/char/openprom.c b/drivers/sbus/char/openprom.c index f565ef6d2abe..fdad6236e5ce 100644 --- a/drivers/sbus/char/openprom.c +++ b/drivers/sbus/char/openprom.c @@ -36,7 +36,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/miscdevice.h> #include <linux/init.h> diff --git a/drivers/sbus/char/pcikbd.c b/drivers/sbus/char/pcikbd.c index ea37949fad0b..40d2836398c0 100644 --- a/drivers/sbus/char/pcikbd.c +++ b/drivers/sbus/char/pcikbd.c @@ -16,7 +16,7 @@ #include <linux/interrupt.h> #include <linux/ioport.h> #include <linux/poll.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <linux/random.h> #include <linux/miscdevice.h> diff --git a/drivers/sbus/char/rtc.c b/drivers/sbus/char/rtc.c index 6105e42290fc..962441de11f7 100644 --- a/drivers/sbus/char/rtc.c +++ b/drivers/sbus/char/rtc.c @@ -15,7 +15,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> #include <linux/poll.h> #include <linux/init.h> diff --git a/drivers/sbus/char/sab82532.c b/drivers/sbus/char/sab82532.c index 5de83158b295..d910cd1b65b1 100644 --- a/drivers/sbus/char/sab82532.c +++ b/drivers/sbus/char/sab82532.c @@ -24,7 +24,7 @@ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> diff --git a/drivers/sbus/char/su.c b/drivers/sbus/char/su.c index bb256e46ed3b..9600cfb0b6b8 100644 --- a/drivers/sbus/char/su.c +++ b/drivers/sbus/char/su.c @@ -61,7 +61,7 @@ do { \ #include <linux/ptrace.h> #include <linux/ioport.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/bootmem.h> #include <linux/delay.h> diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c index 2740c62f31d8..5a3c50f66f6c 100644 --- a/drivers/sbus/char/uctrl.c +++ b/drivers/sbus/char/uctrl.c @@ -9,7 +9,7 @@ #include <linux/errno.h> #include <linux/delay.h> #include <linux/interrupt.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/init.h> #include <linux/miscdevice.h> diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c index a4c0f347ec3f..c395c018aefc 100644 --- a/drivers/sbus/char/vfc_dev.c +++ b/drivers/sbus/char/vfc_dev.c @@ -17,11 +17,12 @@ #include <linux/module.h> #include <linux/kernel.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <linux/sched.h> #include <linux/fs.h> #include <linux/smp_lock.h> +#include <linux/delay.h> #include <linux/spinlock.h> #include <asm/openprom.h> @@ -29,7 +30,6 @@ #include <asm/io.h> #include <asm/system.h> #include <asm/sbus.h> -#include <asm/delay.h> #include <asm/page.h> #include <asm/pgtable.h> #include <asm/uaccess.h> diff --git a/drivers/sbus/char/vfc_i2c.c b/drivers/sbus/char/vfc_i2c.c index 08577384341b..ae7c42f110b6 100644 --- a/drivers/sbus/char/vfc_i2c.c +++ b/drivers/sbus/char/vfc_i2c.c @@ -20,7 +20,7 @@ fairly certain that the flowcharts in the phillips docs are wrong. */ #include <linux/kernel.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/errno.h> #include <linux/sched.h> #include <linux/wait.h> diff --git a/drivers/sbus/dvma.c b/drivers/sbus/dvma.c index bb522768d7a4..f15a3016e427 100644 --- a/drivers/sbus/dvma.c +++ b/drivers/sbus/dvma.c @@ -6,11 +6,11 @@ #include <linux/config.h> #include <linux/string.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> +#include <linux/delay.h> #include <asm/oplib.h> -#include <asm/delay.h> #include <asm/io.h> #include <asm/dma.h> #include <asm/sbus.h> diff --git a/drivers/sbus/sbus.c b/drivers/sbus/sbus.c index 032776c7037f..a2a4d75216de 100644 --- a/drivers/sbus/sbus.c +++ b/drivers/sbus/sbus.c @@ -5,7 +5,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/config.h> #include <linux/init.h> #include <linux/pci.h> diff --git a/drivers/scsi/53c7,8xx.c b/drivers/scsi/53c7,8xx.c index 15ec102d6046..a84fb6f5fd03 100644 --- a/drivers/scsi/53c7,8xx.c +++ b/drivers/scsi/53c7,8xx.c @@ -229,7 +229,7 @@ #include <linux/pci.h> #include <linux/proc_fs.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/mm.h> #include <linux/ioport.h> diff --git a/drivers/scsi/53c7xx.c b/drivers/scsi/53c7xx.c index 2ee80ae09b03..d47fc8ac967f 100644 --- a/drivers/scsi/53c7xx.c +++ b/drivers/scsi/53c7xx.c @@ -246,7 +246,7 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/mm.h> #include <linux/ioport.h> diff --git a/drivers/scsi/NCR53C9x.c b/drivers/scsi/NCR53C9x.c index 0340ab5c44b8..5cf00e3ee02c 100644 --- a/drivers/scsi/NCR53C9x.c +++ b/drivers/scsi/NCR53C9x.c @@ -30,7 +30,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index 69fec6b1499c..5f95838c4a8a 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c @@ -763,7 +763,7 @@ #include <linux/types.h> #include <linux/ioport.h> #include <linux/delay.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #if LINUX_VERSION_CODE >= ASC_LINUX_VERSION(1,3,0) #include <linux/proc_fs.h> diff --git a/drivers/scsi/aic7xxx.c b/drivers/scsi/aic7xxx.c index 8bb8cd96d99c..f8f8fcd64a88 100644 --- a/drivers/scsi/aic7xxx.c +++ b/drivers/scsi/aic7xxx.c @@ -256,7 +256,7 @@ #include <scsi/scsicam.h> #include <linux/stat.h> -#include <linux/malloc.h> /* for kmalloc() */ +#include <linux/slab.h> /* for kmalloc() */ #include <linux/config.h> /* for CONFIG_PCI */ diff --git a/drivers/scsi/blz1230.c b/drivers/scsi/blz1230.c index 6872d7ca66bd..d7c13f7c1076 100644 --- a/drivers/scsi/blz1230.c +++ b/drivers/scsi/blz1230.c @@ -21,7 +21,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/blz2060.c b/drivers/scsi/blz2060.c index 77e3e4f116bd..12efb2891c91 100644 --- a/drivers/scsi/blz2060.c +++ b/drivers/scsi/blz2060.c @@ -21,7 +21,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/cpqfcTScontrol.c b/drivers/scsi/cpqfcTScontrol.c index bc90b51c3802..091deaf397b1 100644 --- a/drivers/scsi/cpqfcTScontrol.c +++ b/drivers/scsi/cpqfcTScontrol.c @@ -35,7 +35,7 @@ #include <linux/string.h> #include <linux/ioport.h> // request_region() prototype #include <linux/sched.h> -#include <linux/malloc.h> // need "kfree" for ext. S/G pages +#include <linux/slab.h> // need "kfree" for ext. S/G pages #include <linux/types.h> #include <linux/pci.h> #include <linux/delay.h> diff --git a/drivers/scsi/cpqfcTSinit.c b/drivers/scsi/cpqfcTSinit.c index dac6954235b1..2d7ec816a7e3 100644 --- a/drivers/scsi/cpqfcTSinit.c +++ b/drivers/scsi/cpqfcTSinit.c @@ -1686,7 +1686,7 @@ int cpqfcTSGetLPSM( PTACHYON fcChip, char cErrorString[]) -#include "linux/malloc.h" +#include "linux/slab.h" // Dynamic memory allocation alignment routines // HP's Tachyon Fibre Channel Controller chips require diff --git a/drivers/scsi/cpqfcTSworker.c b/drivers/scsi/cpqfcTSworker.c index d3416ab6d7df..286cb0aeb013 100644 --- a/drivers/scsi/cpqfcTSworker.c +++ b/drivers/scsi/cpqfcTSworker.c @@ -22,7 +22,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/cyberstorm.c b/drivers/scsi/cyberstorm.c index 33150121c8ae..042b61d4734b 100644 --- a/drivers/scsi/cyberstorm.c +++ b/drivers/scsi/cyberstorm.c @@ -24,7 +24,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/cyberstormII.c b/drivers/scsi/cyberstormII.c index a1d53b314bc4..90e894f9878a 100644 --- a/drivers/scsi/cyberstormII.c +++ b/drivers/scsi/cyberstormII.c @@ -20,7 +20,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/dec_esp.c b/drivers/scsi/dec_esp.c index 25c3cad17346..97b140e8486d 100644 --- a/drivers/scsi/dec_esp.c +++ b/drivers/scsi/dec_esp.c @@ -15,7 +15,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/eata_dma.c b/drivers/scsi/eata_dma.c index 3431655d222e..3d587edce3f1 100644 --- a/drivers/scsi/eata_dma.c +++ b/drivers/scsi/eata_dma.c @@ -68,7 +68,7 @@ #include <linux/sched.h> #include <linux/string.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/in.h> #include <linux/pci.h> #include <linux/proc_fs.h> diff --git a/drivers/scsi/eata_pio.c b/drivers/scsi/eata_pio.c index 0d890817cc2f..ce5b3800106e 100644 --- a/drivers/scsi/eata_pio.c +++ b/drivers/scsi/eata_pio.c @@ -43,7 +43,7 @@ #include <linux/sched.h> #include <linux/string.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/in.h> #include <linux/pci.h> #include <linux/proc_fs.h> diff --git a/drivers/scsi/esp.c b/drivers/scsi/esp.c index 828c9e2903cb..655d46ad49b4 100644 --- a/drivers/scsi/esp.c +++ b/drivers/scsi/esp.c @@ -18,7 +18,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/fastlane.c b/drivers/scsi/fastlane.c index bb7f89990beb..90d6555b0a03 100644 --- a/drivers/scsi/fastlane.c +++ b/drivers/scsi/fastlane.c @@ -29,7 +29,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/fcal.c b/drivers/scsi/fcal.c index 4ffef85617ad..36b017206932 100644 --- a/drivers/scsi/fcal.c +++ b/drivers/scsi/fcal.c @@ -8,7 +8,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 5d403105525d..444682a7a0fd 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c @@ -40,7 +40,7 @@ #include <linux/blkdev.h> #include <linux/errno.h> #include <linux/hdreg.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ide.h> #include <asm/io.h> diff --git a/drivers/scsi/ini9100u.c b/drivers/scsi/ini9100u.c index 4dc0717c7e14..a6744560f181 100644 --- a/drivers/scsi/ini9100u.c +++ b/drivers/scsi/ini9100u.c @@ -136,7 +136,7 @@ #include "scsi.h" #include "sd.h" #include "hosts.h" -#include <linux/malloc.h> +#include <linux/slab.h> #include "ini9100u.h" #ifdef DEBUG_i91u diff --git a/drivers/scsi/inia100.c b/drivers/scsi/inia100.c index 3adcc43cec4c..acd6081f26e6 100644 --- a/drivers/scsi/inia100.c +++ b/drivers/scsi/inia100.c @@ -89,7 +89,7 @@ #include "scsi.h" #include "sd.h" #include "hosts.h" -#include <linux/malloc.h> +#include <linux/slab.h> #include "inia100.h" static Scsi_Host_Template driver_template = INIA100; diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c index d98c57686479..173ef8498873 100644 --- a/drivers/scsi/ips.c +++ b/drivers/scsi/ips.c @@ -123,7 +123,7 @@ #include <linux/errno.h> #include <linux/kernel.h> #include <linux/ioport.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/sched.h> diff --git a/drivers/scsi/jazz_esp.c b/drivers/scsi/jazz_esp.c index 769a25b7d14d..8711c33f3e7d 100644 --- a/drivers/scsi/jazz_esp.c +++ b/drivers/scsi/jazz_esp.c @@ -10,7 +10,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/mac53c94.c b/drivers/scsi/mac53c94.c index ba29e33d8f2b..d57ce9d6814a 100644 --- a/drivers/scsi/mac53c94.c +++ b/drivers/scsi/mac53c94.c @@ -11,7 +11,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c index e96802127564..d1d38ec30cb2 100644 --- a/drivers/scsi/mac_esp.c +++ b/drivers/scsi/mac_esp.c @@ -18,7 +18,7 @@ #include <linux/types.h> #include <linux/ctype.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/mca_53c9x.c b/drivers/scsi/mca_53c9x.c index 6267a6189450..6d2ace9d76bc 100644 --- a/drivers/scsi/mca_53c9x.c +++ b/drivers/scsi/mca_53c9x.c @@ -34,7 +34,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/mesh.c b/drivers/scsi/mesh.c index f80a7c4972bd..a1afb8e1cb73 100644 --- a/drivers/scsi/mesh.c +++ b/drivers/scsi/mesh.c @@ -12,7 +12,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c index 3f8854aafeb4..d1f5bd1ad185 100644 --- a/drivers/scsi/ncr53c8xx.c +++ b/drivers/scsi/ncr53c8xx.c @@ -136,7 +136,7 @@ #include <linux/errno.h> #include <linux/pci.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/ioport.h> #include <linux/time.h> diff --git a/drivers/scsi/oktagon_esp.c b/drivers/scsi/oktagon_esp.c index 976a67dc692a..bdd779293034 100644 --- a/drivers/scsi/oktagon_esp.c +++ b/drivers/scsi/oktagon_esp.c @@ -19,7 +19,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/pci2220i.c b/drivers/scsi/pci2220i.c index 2b6d3122d2f3..50865ceadb45 100644 --- a/drivers/scsi/pci2220i.c +++ b/drivers/scsi/pci2220i.c @@ -40,7 +40,7 @@ #include <linux/kernel.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/pci.h> #include <linux/ioport.h> #include <linux/delay.h> diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c index 75914a1a216d..2dad6515b4ba 100644 --- a/drivers/scsi/pcmcia/aha152x_stub.c +++ b/drivers/scsi/pcmcia/aha152x_stub.c @@ -38,7 +38,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/ioport.h> diff --git a/drivers/scsi/pcmcia/apa1480_stub.c b/drivers/scsi/pcmcia/apa1480_stub.c index 24ee469cdc2a..5ac3cf79f9c6 100644 --- a/drivers/scsi/pcmcia/apa1480_stub.c +++ b/drivers/scsi/pcmcia/apa1480_stub.c @@ -35,7 +35,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/ioport.h> diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c index 3c480a3ca06b..c15aa191f23b 100644 --- a/drivers/scsi/pcmcia/fdomain_stub.c +++ b/drivers/scsi/pcmcia/fdomain_stub.c @@ -35,7 +35,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/ioport.h> diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index 1cfee657fea4..c1f41e2ef276 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c @@ -35,7 +35,7 @@ #include <linux/init.h> #include <linux/kernel.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/ioport.h> diff --git a/drivers/scsi/pluto.c b/drivers/scsi/pluto.c index a0ca91c60b60..c651234dde7e 100644 --- a/drivers/scsi/pluto.c +++ b/drivers/scsi/pluto.c @@ -8,7 +8,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c index 50db38c9742a..cbf9140cbb34 100644 --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c @@ -220,7 +220,7 @@ END OF TERMS AND CONDITIONS #include "ql1280_fw.h" #include <linux/stat.h> -#include <linux/malloc.h> /* for kmalloc() */ +#include <linux/slab.h> /* for kmalloc() */ #ifndef KERNEL_VERSION diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c index d471dddd9994..6466e7f84a11 100644 --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c @@ -16,7 +16,7 @@ #include <linux/delay.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index cfd290c11860..877842224080 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c @@ -45,7 +45,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 3d6e45fcdc36..87a44846de1e 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -14,7 +14,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index dcde48437493..3dbdb6ca2c92 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -23,7 +23,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_merge.c b/drivers/scsi/scsi_merge.c index 4ebadd868ebd..e7673c0803a2 100644 --- a/drivers/scsi/scsi_merge.c +++ b/drivers/scsi/scsi_merge.c @@ -39,7 +39,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_obsolete.c b/drivers/scsi/scsi_obsolete.c index 55adb72af27a..3b3990dfb0ef 100644 --- a/drivers/scsi/scsi_obsolete.c +++ b/drivers/scsi/scsi_obsolete.c @@ -52,7 +52,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_proc.c b/drivers/scsi/scsi_proc.c index 3353a6aa7195..b486119b171e 100644 --- a/drivers/scsi/scsi_proc.c +++ b/drivers/scsi/scsi_proc.c @@ -22,7 +22,7 @@ #include <linux/string.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/proc_fs.h> #include <linux/errno.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_queue.c b/drivers/scsi/scsi_queue.c index 4793f1e8bf94..c41f1ce06928 100644 --- a/drivers/scsi/scsi_queue.c +++ b/drivers/scsi/scsi_queue.c @@ -16,7 +16,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/stat.h> diff --git a/drivers/scsi/scsi_syms.c b/drivers/scsi/scsi_syms.c index f0e85c70e5e3..b29e90e3cc92 100644 --- a/drivers/scsi/scsi_syms.c +++ b/drivers/scsi/scsi_syms.c @@ -9,7 +9,7 @@ #include <linux/sched.h> #include <linux/timer.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/kernel.h> #include <linux/blk.h> diff --git a/drivers/scsi/sun3x_esp.c b/drivers/scsi/sun3x_esp.c index 2a4d8e58d333..073dcf10c3ea 100644 --- a/drivers/scsi/sun3x_esp.c +++ b/drivers/scsi/sun3x_esp.c @@ -8,7 +8,7 @@ #include <linux/kernel.h> #include <linux/types.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/blk.h> #include <linux/proc_fs.h> #include <linux/stat.h> diff --git a/drivers/scsi/sym53c8xx.c b/drivers/scsi/sym53c8xx.c index 917e51760223..f78641a9a857 100644 --- a/drivers/scsi/sym53c8xx.c +++ b/drivers/scsi/sym53c8xx.c @@ -126,7 +126,7 @@ #include <linux/errno.h> #include <linux/pci.h> #include <linux/string.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/ioport.h> #include <linux/time.h> diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c index e7af1328bb9c..c4e5e98d73ad 100644 --- a/drivers/scsi/wd7000.c +++ b/drivers/scsi/wd7000.c @@ -151,7 +151,7 @@ #include <linux/types.h> #include <linux/string.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/spinlock.h> #include <asm/system.h> #include <asm/dma.h> diff --git a/drivers/sgi/char/ds1286.c b/drivers/sgi/char/ds1286.c index df82bfb51399..9a9a0ef99a28 100644 --- a/drivers/sgi/char/ds1286.c +++ b/drivers/sgi/char/ds1286.c @@ -31,7 +31,7 @@ #include <linux/types.h> #include <linux/errno.h> #include <linux/miscdevice.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/fcntl.h> #include <linux/init.h> diff --git a/drivers/sgi/char/graphics.c b/drivers/sgi/char/graphics.c index 46f9402439c2..24c6fbaaefa0 100644 --- a/drivers/sgi/char/graphics.c +++ b/drivers/sgi/char/graphics.c @@ -31,7 +31,7 @@ #include <linux/sched.h> #include <linux/mm.h> #include <linux/mman.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/smp_lock.h> #include <asm/uaccess.h> diff --git a/drivers/sound/cmpci.c b/drivers/sound/cmpci.c index b9f345f8b4f8..e962e22baab8 100644 --- a/drivers/sound/cmpci.c +++ b/drivers/sound/cmpci.c @@ -106,7 +106,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <linux/wrapper.h> diff --git a/drivers/sound/cs46xx.c b/drivers/sound/cs46xx.c index 147e55d101e3..bc9ba60e1e64 100644 --- a/drivers/sound/cs46xx.c +++ b/drivers/sound/cs46xx.c @@ -58,7 +58,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #ifdef CS46XX_PM diff --git a/drivers/sound/dmasound/dmasound_awacs.c b/drivers/sound/dmasound/dmasound_awacs.c index 0415191ec926..2f85ffc27234 100644 --- a/drivers/sound/dmasound/dmasound_awacs.c +++ b/drivers/sound/dmasound/dmasound_awacs.c @@ -10,12 +10,13 @@ #include <linux/module.h> #include <linux/config.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/soundcard.h> #include <linux/adb.h> #include <linux/nvram.h> +#include <linux/tty.h> #include <linux/vt_kern.h> #ifdef CONFIG_ADB_CUDA #include <linux/cuda.h> diff --git a/drivers/sound/dmasound/dmasound_core.c b/drivers/sound/dmasound/dmasound_core.c index 5550ee2c9fac..db16223c6f60 100644 --- a/drivers/sound/dmasound/dmasound_core.c +++ b/drivers/sound/dmasound/dmasound_core.c @@ -107,7 +107,7 @@ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sound.h> #include <linux/init.h> #include <linux/soundcard.h> diff --git a/drivers/sound/dmasound/dmasound_q40.c b/drivers/sound/dmasound/dmasound_q40.c index 0e83e1fb6332..db6960c147da 100644 --- a/drivers/sound/dmasound/dmasound_q40.c +++ b/drivers/sound/dmasound/dmasound_q40.c @@ -10,7 +10,7 @@ #include <linux/module.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <asm/uaccess.h> diff --git a/drivers/sound/emu10k1/audio.c b/drivers/sound/emu10k1/audio.c index 2280ca236b3f..470ce57dc8ed 100644 --- a/drivers/sound/emu10k1/audio.c +++ b/drivers/sound/emu10k1/audio.c @@ -33,7 +33,7 @@ #define __NO_VERSION__ #include <linux/module.h> #include <linux/poll.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/bitops.h> #include <asm/io.h> diff --git a/drivers/sound/emu10k1/cardmi.c b/drivers/sound/emu10k1/cardmi.c index e39e8f0f818d..ecec8dea1040 100644 --- a/drivers/sound/emu10k1/cardmi.c +++ b/drivers/sound/emu10k1/cardmi.c @@ -31,7 +31,7 @@ ********************************************************************** */ -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/sched.h> #include "hwaccess.h" diff --git a/drivers/sound/emu10k1/cardmo.c b/drivers/sound/emu10k1/cardmo.c index 726a83424cdc..7adb9de02829 100644 --- a/drivers/sound/emu10k1/cardmo.c +++ b/drivers/sound/emu10k1/cardmo.c @@ -31,7 +31,7 @@ ********************************************************************** */ -#include <linux/malloc.h> +#include <linux/slab.h> #include "hwaccess.h" #include "8010.h" diff --git a/drivers/sound/emu10k1/main.c b/drivers/sound/emu10k1/main.c index 20d35fa2039c..171b5aa5913a 100644 --- a/drivers/sound/emu10k1/main.c +++ b/drivers/sound/emu10k1/main.c @@ -52,7 +52,7 @@ /* These are only included once per module */ #include <linux/version.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> diff --git a/drivers/sound/emu10k1/midi.c b/drivers/sound/emu10k1/midi.c index 3782b8b7c458..c2b13b5f20ea 100644 --- a/drivers/sound/emu10k1/midi.c +++ b/drivers/sound/emu10k1/midi.c @@ -32,7 +32,7 @@ #define __NO_VERSION__ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/version.h> #include <linux/sched.h> #include <linux/smp_lock.h> diff --git a/drivers/sound/es1370.c b/drivers/sound/es1370.c index 885612f8ce5a..b5f270fb4b08 100644 --- a/drivers/sound/es1370.c +++ b/drivers/sound/es1370.c @@ -146,7 +146,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <linux/smp_lock.h> diff --git a/drivers/sound/es1371.c b/drivers/sound/es1371.c index ae22d6cacc92..4abcfe663be9 100644 --- a/drivers/sound/es1371.c +++ b/drivers/sound/es1371.c @@ -113,7 +113,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <linux/init.h> diff --git a/drivers/sound/esssolo1.c b/drivers/sound/esssolo1.c index ac2b6d243699..2763f6522665 100644 --- a/drivers/sound/esssolo1.c +++ b/drivers/sound/esssolo1.c @@ -81,7 +81,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <linux/bitops.h> diff --git a/drivers/sound/i810_audio.c b/drivers/sound/i810_audio.c index ab2dacd89eec..78e3b88476d1 100644 --- a/drivers/sound/i810_audio.c +++ b/drivers/sound/i810_audio.c @@ -73,7 +73,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <asm/io.h> diff --git a/drivers/sound/maestro.c b/drivers/sound/maestro.c index 6bdb2ade8a37..32d55cb7661a 100644 --- a/drivers/sound/maestro.c +++ b/drivers/sound/maestro.c @@ -231,7 +231,7 @@ #include <linux/ioport.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <linux/spinlock.h> diff --git a/drivers/sound/maestro3.c b/drivers/sound/maestro3.c index 33c694ab7ecd..a8fb70b1b42a 100644 --- a/drivers/sound/maestro3.c +++ b/drivers/sound/maestro3.c @@ -28,6 +28,8 @@ * Shouts go out to Mike "DJ XPCom" Ang. * * History + * v1.21 - Feb 04 2001 - Zach Brown <zab@zabbo.net> + * fix up really dumb notifier -> suspend oops * v1.20 - Jan 30 2001 - Zach Brown <zab@zabbo.net> * get rid of pm callback and use pci_dev suspend/resume instead * m3_probe cleanups, including pm oops think-o @@ -147,7 +149,7 @@ #define M_DEBUG 1 -#define DRIVER_VERSION "1.20" +#define DRIVER_VERSION "1.21" #define M3_MODULE_NAME "maestro3" #define PFX M3_MODULE_NAME ": " @@ -2763,7 +2765,6 @@ static int m3_notifier(struct notifier_block *nb, unsigned long event, void *buf static void m3_suspend(struct pci_dev *pci_dev) { unsigned long flags; - int index; int i; struct m3_card *card = pci_dev->driver_data; @@ -2788,15 +2789,18 @@ static void m3_suspend(struct pci_dev *pci_dev) m3_assp_halt(card); - index = 0; - DPRINTK(DPMOD, "saving code\n"); - for(i = REV_B_CODE_MEMORY_BEGIN ; i <= REV_B_CODE_MEMORY_END; i++) - card->suspend_mem[index++] = - m3_assp_read(card, MEMTYPE_INTERNAL_CODE, i); - DPRINTK(DPMOD, "saving data\n"); - for(i = REV_B_DATA_MEMORY_BEGIN ; i <= REV_B_DATA_MEMORY_END; i++) - card->suspend_mem[index++] = - m3_assp_read(card, MEMTYPE_INTERNAL_DATA, i); + if(card->suspend_mem) { + int index = 0; + + DPRINTK(DPMOD, "saving code\n"); + for(i = REV_B_CODE_MEMORY_BEGIN ; i <= REV_B_CODE_MEMORY_END; i++) + card->suspend_mem[index++] = + m3_assp_read(card, MEMTYPE_INTERNAL_CODE, i); + DPRINTK(DPMOD, "saving data\n"); + for(i = REV_B_DATA_MEMORY_BEGIN ; i <= REV_B_DATA_MEMORY_END; i++) + card->suspend_mem[index++] = + m3_assp_read(card, MEMTYPE_INTERNAL_DATA, i); + } DPRINTK(DPMOD, "powering down apci regs\n"); m3_outw(card, 0xffff, 0x54); diff --git a/drivers/sound/msnd.c b/drivers/sound/msnd.c index 2fd11df4b23d..a9facd762566 100644 --- a/drivers/sound/msnd.c +++ b/drivers/sound/msnd.c @@ -30,7 +30,7 @@ #endif #include <linux/module.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/types.h> #include <linux/delay.h> diff --git a/drivers/sound/msnd_pinnacle.c b/drivers/sound/msnd_pinnacle.c index 305969ff0697..f9914634e5fd 100644 --- a/drivers/sound/msnd_pinnacle.c +++ b/drivers/sound/msnd_pinnacle.c @@ -37,7 +37,7 @@ #include <linux/config.h> #include <linux/version.h> #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/types.h> #include <linux/delay.h> #include <linux/init.h> diff --git a/drivers/sound/os.h b/drivers/sound/os.h index 09b8c2b86dd7..1a66e3a8441d 100644 --- a/drivers/sound/os.h +++ b/drivers/sound/os.h @@ -20,7 +20,7 @@ #include <asm/param.h> #include <linux/ptrace.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <asm/page.h> #include <asm/system.h> diff --git a/drivers/sound/sonicvibes.c b/drivers/sound/sonicvibes.c index c0f337a4cfb6..d0c37ba0af89 100644 --- a/drivers/sound/sonicvibes.c +++ b/drivers/sound/sonicvibes.c @@ -100,7 +100,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <asm/io.h> diff --git a/drivers/sound/sound_core.c b/drivers/sound/sound_core.c index d266b1353576..b45802ed5d61 100644 --- a/drivers/sound/sound_core.c +++ b/drivers/sound/sound_core.c @@ -37,7 +37,7 @@ #include <linux/config.h> #include <linux/module.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/types.h> #include <linux/kernel.h> #include <linux/fs.h> diff --git a/drivers/sound/sound_firmware.c b/drivers/sound/sound_firmware.c index 393e6a780d26..9e8691d284ea 100644 --- a/drivers/sound/sound_firmware.c +++ b/drivers/sound/sound_firmware.c @@ -3,7 +3,7 @@ #include <linux/module.h> #include <linux/fs.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/unistd.h> #include <asm/uaccess.h> diff --git a/drivers/sound/soundcard.c b/drivers/sound/soundcard.c index 87ec7f181421..de95d6c89e56 100644 --- a/drivers/sound/soundcard.c +++ b/drivers/sound/soundcard.c @@ -37,7 +37,7 @@ #include <asm/io.h> #include <asm/segment.h> #include <linux/wait.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/devfs_fs_kernel.h> #include <linux/major.h> diff --git a/drivers/sound/sscape.c b/drivers/sound/sscape.c index ff9e0b91be84..694321be7fd5 100644 --- a/drivers/sound/sscape.c +++ b/drivers/sound/sscape.c @@ -36,7 +36,7 @@ #include <asm/io.h> #include <asm/segment.h> #include <linux/wait.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/ioport.h> #include <linux/delay.h> #include <linux/proc_fs.h> diff --git a/drivers/sound/trident.c b/drivers/sound/trident.c index db5f2b611bf6..0a819243940d 100644 --- a/drivers/sound/trident.c +++ b/drivers/sound/trident.c @@ -108,7 +108,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/sound.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/soundcard.h> #include <linux/pci.h> #include <asm/io.h> diff --git a/drivers/sound/wavfront.c b/drivers/sound/wavfront.c index 8e810691734d..accc16ccf1fe 100644 --- a/drivers/sound/wavfront.c +++ b/drivers/sound/wavfront.c @@ -2534,7 +2534,7 @@ static int __init detect_wavefront (int irq, int io_base) #define __KERNEL_SYSCALLS__ #include <linux/fs.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/unistd.h> #include <asm/uaccess.h> diff --git a/drivers/telephony/ixj.c b/drivers/telephony/ixj.c index cab9b4e5ffbb..4bb271f5adfe 100644 --- a/drivers/telephony/ixj.c +++ b/drivers/telephony/ixj.c @@ -53,7 +53,7 @@ static char ixj_c_revision[] = "$Revision: 3.31 $"; #include <linux/kernel.h> /* printk() */ #include <linux/fs.h> /* everything... */ #include <linux/errno.h> /* error codes */ -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/ioport.h> #include <linux/interrupt.h> diff --git a/drivers/usb/acm.c b/drivers/usb/acm.c index 555a7e967e47..63a006e16191 100644 --- a/drivers/usb/acm.c +++ b/drivers/usb/acm.c @@ -45,8 +45,9 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> #include <linux/tty.h> diff --git a/drivers/usb/audio.c b/drivers/usb/audio.c index fb4939d92a26..4bff140c8f29 100644 --- a/drivers/usb/audio.c +++ b/drivers/usb/audio.c @@ -170,7 +170,7 @@ #include <linux/version.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/string.h> #include <linux/timer.h> #include <linux/sched.h> diff --git a/drivers/usb/bluetooth.c b/drivers/usb/bluetooth.c index 41a3c857e8c6..62bcd502e7af 100644 --- a/drivers/usb/bluetooth.c +++ b/drivers/usb/bluetooth.c @@ -75,11 +75,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #define DEBUG diff --git a/drivers/usb/dc2xx.c b/drivers/usb/dc2xx.c index 58d6b28435e8..cb785e26dc12 100644 --- a/drivers/usb/dc2xx.c +++ b/drivers/usb/dc2xx.c @@ -60,7 +60,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #ifdef CONFIG_USB_DEBUG diff --git a/drivers/usb/dsbr100.c b/drivers/usb/dsbr100.c index 32e61ce7dfb2..687e0cc070e7 100644 --- a/drivers/usb/dsbr100.c +++ b/drivers/usb/dsbr100.c @@ -60,7 +60,7 @@ #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/videodev.h> #include <linux/usb.h> diff --git a/drivers/usb/hid.c b/drivers/usb/hid.c index 208be6775437..c407fd88382d 100644 --- a/drivers/usb/hid.c +++ b/drivers/usb/hid.c @@ -30,7 +30,7 @@ */ #include <linux/module.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/init.h> #include <linux/kernel.h> diff --git a/drivers/usb/hid.h b/drivers/usb/hid.h index 98abc8a76651..b6fdf98ed51b 100644 --- a/drivers/usb/hid.h +++ b/drivers/usb/hid.h @@ -31,7 +31,7 @@ */ #include <linux/types.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/list.h> /* diff --git a/drivers/usb/hub.c b/drivers/usb/hub.c index 0306cf2ead53..e623209e8e9f 100644 --- a/drivers/usb/hub.c +++ b/drivers/usb/hub.c @@ -11,7 +11,7 @@ #include <linux/module.h> #include <linux/sched.h> #include <linux/list.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/smp_lock.h> #ifdef CONFIG_USB_DEBUG #define DEBUG diff --git a/drivers/usb/ibmcam.c b/drivers/usb/ibmcam.c index ca1c32cd94eb..33d34a14b36c 100644 --- a/drivers/usb/ibmcam.c +++ b/drivers/usb/ibmcam.c @@ -28,7 +28,7 @@ #include <linux/kernel.h> #include <linux/sched.h> #include <linux/list.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mm.h> #include <linux/smp_lock.h> #include <linux/videodev.h> diff --git a/drivers/usb/mdc800.c b/drivers/usb/mdc800.c index 71df829d7f7e..8589915d80f1 100644 --- a/drivers/usb/mdc800.c +++ b/drivers/usb/mdc800.c @@ -84,7 +84,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/smp_lock.h> diff --git a/drivers/usb/microtek.c b/drivers/usb/microtek.c index 1368056617b1..c1ea120b698f 100644 --- a/drivers/usb/microtek.c +++ b/drivers/usb/microtek.c @@ -114,7 +114,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/spinlock.h> #include <linux/smp_lock.h> #include <linux/usb.h> diff --git a/drivers/usb/pegasus.c b/drivers/usb/pegasus.c index 94e609ad20e5..26116ab4777d 100644 --- a/drivers/usb/pegasus.c +++ b/drivers/usb/pegasus.c @@ -41,7 +41,7 @@ #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/delay.h> #include <linux/netdevice.h> diff --git a/drivers/usb/printer.c b/drivers/usb/printer.c index e734bd2d7588..8bcdae35a4e1 100644 --- a/drivers/usb/printer.c +++ b/drivers/usb/printer.c @@ -42,7 +42,7 @@ #include <linux/signal.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/lp.h> #undef DEBUG #include <linux/usb.h> diff --git a/drivers/usb/rio500.c b/drivers/usb/rio500.c index 29b926056bbc..e22c1a4df444 100644 --- a/drivers/usb/rio500.c +++ b/drivers/usb/rio500.c @@ -33,7 +33,7 @@ #include <linux/random.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/spinlock.h> #include <linux/usb.h> #include <linux/smp_lock.h> diff --git a/drivers/usb/scanner.h b/drivers/usb/scanner.h index e052e9a4f215..18f38fb9f329 100644 --- a/drivers/usb/scanner.h +++ b/drivers/usb/scanner.h @@ -26,7 +26,7 @@ #include <linux/errno.h> #include <asm/uaccess.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/ioctl.h> #include <linux/sched.h> diff --git a/drivers/usb/serial/belkin_sa.c b/drivers/usb/serial/belkin_sa.c index c24c5fc8b0a6..f86b53c8c51a 100644 --- a/drivers/usb/serial/belkin_sa.c +++ b/drivers/usb/serial/belkin_sa.c @@ -57,11 +57,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c index 9139f868c0c3..565644765b43 100644 --- a/drivers/usb/serial/digi_acceleport.c +++ b/drivers/usb/serial/digi_acceleport.c @@ -233,11 +233,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> #include <linux/tqueue.h> diff --git a/drivers/usb/serial/empeg.c b/drivers/usb/serial/empeg.c index 19e5ec94f199..a2768ace3baf 100644 --- a/drivers/usb/serial/empeg.c +++ b/drivers/usb/serial/empeg.c @@ -48,11 +48,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> #ifdef CONFIG_USB_SERIAL_DEBUG diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 41b7b862859d..8940704c75ae 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -71,11 +71,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c index 8d7c9c035ca5..a7be1b6505a9 100644 --- a/drivers/usb/serial/keyspan.c +++ b/drivers/usb/serial/keyspan.c @@ -55,11 +55,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/serial/keyspan_pda.c b/drivers/usb/serial/keyspan_pda.c index ef5e1263b090..1e6521d0178f 100644 --- a/drivers/usb/serial/keyspan_pda.c +++ b/drivers/usb/serial/keyspan_pda.c @@ -59,11 +59,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> #include <linux/tqueue.h> diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c index 1a91ac354f93..eb51be38eac7 100644 --- a/drivers/usb/serial/mct_u232.c +++ b/drivers/usb/serial/mct_u232.c @@ -46,11 +46,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c index 9265d6376821..6f2bf83390ef 100644 --- a/drivers/usb/serial/omninet.c +++ b/drivers/usb/serial/omninet.c @@ -36,11 +36,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/serial/usbserial.c b/drivers/usb/serial/usbserial.c index 80ca1ea84c16..0db097989aeb 100644 --- a/drivers/usb/serial/usbserial.c +++ b/drivers/usb/serial/usbserial.c @@ -263,11 +263,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> #include <linux/list.h> diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 8240dd86c64b..7913527d73d0 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c @@ -85,11 +85,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c index 46b625832fea..fb26ae14e2dd 100644 --- a/drivers/usb/serial/whiteheat.c +++ b/drivers/usb/serial/whiteheat.c @@ -55,11 +55,11 @@ #include <linux/errno.h> #include <linux/poll.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fcntl.h> +#include <linux/tty.h> #include <linux/tty_driver.h> #include <linux/tty_flip.h> -#include <linux/tty.h> #include <linux/module.h> #include <linux/spinlock.h> diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c index 241f7d5f62eb..6b2f43e3ea49 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c @@ -49,7 +49,7 @@ #include "debug.h" #include "transport.h" -#include <linux/malloc.h> +#include <linux/slab.h> /* * kernel thread actions diff --git a/drivers/usb/storage/sddr09.c b/drivers/usb/storage/sddr09.c index e737280f7867..3077b6879e10 100644 --- a/drivers/usb/storage/sddr09.c +++ b/drivers/usb/storage/sddr09.c @@ -38,7 +38,7 @@ #include <linux/sched.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> #define short_pack(lsb,msb) ( ((u16)(lsb)) | ( ((u16)(msb))<<8 ) ) #define LSB_of(s) ((s)&0xFF) diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c index c0de9c14c8a7..5d3983b10b7b 100644 --- a/drivers/usb/storage/shuttle_usbat.c +++ b/drivers/usb/storage/shuttle_usbat.c @@ -44,7 +44,7 @@ #include <linux/sched.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> extern int usb_stor_control_msg(struct us_data *us, unsigned int pipe, u8 request, u8 requesttype, u16 value, u16 index, diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c index c46ff24dc24a..9fabf770a98e 100644 --- a/drivers/usb/storage/transport.c +++ b/drivers/usb/storage/transport.c @@ -52,7 +52,7 @@ #include <linux/sched.h> #include <linux/errno.h> -#include <linux/malloc.h> +#include <linux/slab.h> /*********************************************************************** * Helper routines diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c index 1e0f40f50806..47df666de545 100644 --- a/drivers/usb/storage/usb.c +++ b/drivers/usb/storage/usb.c @@ -70,7 +70,7 @@ #include <linux/sched.h> #include <linux/errno.h> #include <linux/init.h> -#include <linux/malloc.h> +#include <linux/slab.h> /* Some informational data */ MODULE_AUTHOR("Matthew Dharm <mdharm-usb@one-eyed-alien.net>"); diff --git a/drivers/usb/uhci.c b/drivers/usb/uhci.c index 40cf2f74649b..5d1b3f60ad71 100644 --- a/drivers/usb/uhci.c +++ b/drivers/usb/uhci.c @@ -33,7 +33,7 @@ #include <linux/delay.h> #include <linux/ioport.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/smp_lock.h> #include <linux/errno.h> #include <linux/unistd.h> diff --git a/drivers/usb/usb-debug.c b/drivers/usb/usb-debug.c index e8da9e376588..a2958fc6cf42 100644 --- a/drivers/usb/usb-debug.c +++ b/drivers/usb/usb-debug.c @@ -8,7 +8,7 @@ #include <linux/version.h> #include <linux/kernel.h> #include <linux/mm.h> -#include <linux/malloc.h> +#include <linux/slab.h> #ifdef CONFIG_USB_DEBUG #define DEBUG #else diff --git a/drivers/usb/usb-ohci.c b/drivers/usb/usb-ohci.c index 9d424a61af7f..b8b86f487b04 100644 --- a/drivers/usb/usb-ohci.c +++ b/drivers/usb/usb-ohci.c @@ -47,7 +47,7 @@ #include <linux/delay.h> #include <linux/ioport.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/smp_lock.h> #include <linux/errno.h> #include <linux/init.h> diff --git a/drivers/usb/usb-uhci.c b/drivers/usb/usb-uhci.c index b4cace1dcf79..574b9cab2e8e 100644 --- a/drivers/usb/usb-uhci.c +++ b/drivers/usb/usb-uhci.c @@ -26,7 +26,7 @@ #include <linux/delay.h> #include <linux/ioport.h> #include <linux/sched.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/smp_lock.h> #include <linux/errno.h> #include <linux/unistd.h> diff --git a/drivers/usb/usb.c b/drivers/usb/usb.c index c94aed09f00e..a7830c19c835 100644 --- a/drivers/usb/usb.c +++ b/drivers/usb/usb.c @@ -26,7 +26,7 @@ #include <linux/module.h> #include <linux/string.h> #include <linux/bitops.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/interrupt.h> /* for in_interrupt() */ #include <linux/kmod.h> #include <linux/init.h> diff --git a/drivers/usb/usbkbd.c b/drivers/usb/usbkbd.c index 08fef2d4c51b..61d3fec9baaa 100644 --- a/drivers/usb/usbkbd.c +++ b/drivers/usb/usbkbd.c @@ -29,7 +29,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/module.h> #include <linux/input.h> #include <linux/init.h> diff --git a/drivers/usb/usbmouse.c b/drivers/usb/usbmouse.c index 33aee785d0d5..680ed74901d1 100644 --- a/drivers/usb/usbmouse.c +++ b/drivers/usb/usbmouse.c @@ -29,7 +29,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/module.h> #include <linux/init.h> diff --git a/drivers/usb/wacom.c b/drivers/usb/wacom.c index 4397c2da2094..73e932ddeffe 100644 --- a/drivers/usb/wacom.c +++ b/drivers/usb/wacom.c @@ -51,7 +51,7 @@ */ #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/input.h> #include <linux/module.h> #include <linux/init.h> diff --git a/drivers/video/S3triofb.c b/drivers/video/S3triofb.c index e8c0c97daeb2..9115ce37d865 100644 --- a/drivers/video/S3triofb.c +++ b/drivers/video/S3triofb.c @@ -30,7 +30,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c index 5289a4a83fdf..bba3a3ce5d53 100644 --- a/drivers/video/acornfb.c +++ b/drivers/video/acornfb.c @@ -23,7 +23,7 @@ #include <linux/ctype.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/fb.h> diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c index 1f95e4dac383..fcdf286c8849 100644 --- a/drivers/video/amifb.c +++ b/drivers/video/amifb.c @@ -46,7 +46,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/config.h> #include <linux/interrupt.h> diff --git a/drivers/video/atafb.c b/drivers/video/atafb.c index e305027a7ac6..62a1461c2da2 100644 --- a/drivers/video/atafb.c +++ b/drivers/video/atafb.c @@ -54,7 +54,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/init.h> diff --git a/drivers/video/aty128fb.c b/drivers/video/aty128fb.c index 626bf3cad35f..93913b3b2dc6 100644 --- a/drivers/video/aty128fb.c +++ b/drivers/video/aty128fb.c @@ -33,7 +33,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/atyfb.c b/drivers/video/atyfb.c index 3c0b9408f816..833926b7ba7b 100644 --- a/drivers/video/atyfb.c +++ b/drivers/video/atyfb.c @@ -45,7 +45,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/bwtwofb.c b/drivers/video/bwtwofb.c index ebb5d5e56297..d0ea4e079b96 100644 --- a/drivers/video/bwtwofb.c +++ b/drivers/video/bwtwofb.c @@ -15,7 +15,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/cgfourteenfb.c b/drivers/video/cgfourteenfb.c index 05a578bfd659..223722731240 100644 --- a/drivers/video/cgfourteenfb.c +++ b/drivers/video/cgfourteenfb.c @@ -12,7 +12,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/cgsixfb.c b/drivers/video/cgsixfb.c index b569589d0a8c..6e78465156a4 100644 --- a/drivers/video/cgsixfb.c +++ b/drivers/video/cgsixfb.c @@ -13,7 +13,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/cgthreefb.c b/drivers/video/cgthreefb.c index 9cec20abfa4f..1deff1827229 100644 --- a/drivers/video/cgthreefb.c +++ b/drivers/video/cgthreefb.c @@ -13,7 +13,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/chipsfb.c b/drivers/video/chipsfb.c index 9a3908c4b078..c0bee62d44a9 100644 --- a/drivers/video/chipsfb.c +++ b/drivers/video/chipsfb.c @@ -21,7 +21,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/clgenfb.c b/drivers/video/clgenfb.c index 32a26c2d738e..ecad3bbbed50 100644 --- a/drivers/video/clgenfb.c +++ b/drivers/video/clgenfb.c @@ -40,7 +40,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/init.h> diff --git a/drivers/video/controlfb.c b/drivers/video/controlfb.c index fe64ab9a143c..58ccd3e139a4 100644 --- a/drivers/video/controlfb.c +++ b/drivers/video/controlfb.c @@ -31,7 +31,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/creatorfb.c b/drivers/video/creatorfb.c index 22349c3807ae..712843792cee 100644 --- a/drivers/video/creatorfb.c +++ b/drivers/video/creatorfb.c @@ -11,7 +11,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/cyber2000fb.c b/drivers/video/cyber2000fb.c index 5cb924fc85c2..d8c524e760d1 100644 --- a/drivers/video/cyber2000fb.c +++ b/drivers/video/cyber2000fb.c @@ -31,7 +31,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/pci.h> diff --git a/drivers/video/cyberfb.c b/drivers/video/cyberfb.c index 4510d116550d..75f457092869 100644 --- a/drivers/video/cyberfb.c +++ b/drivers/video/cyberfb.c @@ -82,7 +82,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/zorro.h> #include <linux/fb.h> diff --git a/drivers/video/dn_cfb4.c b/drivers/video/dn_cfb4.c index 205703be4515..3f30e9d97264 100644 --- a/drivers/video/dn_cfb4.c +++ b/drivers/video/dn_cfb4.c @@ -3,7 +3,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <asm/setup.h> diff --git a/drivers/video/dn_cfb8.c b/drivers/video/dn_cfb8.c index a654717b3d2f..d200972a780f 100644 --- a/drivers/video/dn_cfb8.c +++ b/drivers/video/dn_cfb8.c @@ -3,7 +3,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <asm/setup.h> diff --git a/drivers/video/dnfb.c b/drivers/video/dnfb.c index f7a5ffba3af0..7bc2f92b285c 100644 --- a/drivers/video/dnfb.c +++ b/drivers/video/dnfb.c @@ -3,7 +3,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/interrupt.h> #include <asm/setup.h> diff --git a/drivers/video/fbcon.c b/drivers/video/fbcon.c index 32935dfc3cf4..15230bb3b6fa 100644 --- a/drivers/video/fbcon.c +++ b/drivers/video/fbcon.c @@ -67,7 +67,7 @@ #include <linux/console.h> #include <linux/string.h> #include <linux/kd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/fb.h> #include <linux/vt_kern.h> #include <linux/selection.h> diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 097bc3f12da2..7d5c70808c48 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c @@ -17,7 +17,7 @@ #include <linux/smp_lock.h> #include <linux/kernel.h> #include <linux/major.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/mman.h> #include <linux/tty.h> #include <linux/console.h> diff --git a/drivers/video/g364fb.c b/drivers/video/g364fb.c index 43829e53c585..15ed42857f61 100644 --- a/drivers/video/g364fb.c +++ b/drivers/video/g364fb.c @@ -21,7 +21,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/hgafb.c b/drivers/video/hgafb.c index 87ab4a270f05..5bcdf0d8aeb1 100644 --- a/drivers/video/hgafb.c +++ b/drivers/video/hgafb.c @@ -37,7 +37,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/init.h> diff --git a/drivers/video/hitfb.c b/drivers/video/hitfb.c index 91b2b77ebd58..747430ebfc1a 100644 --- a/drivers/video/hitfb.c +++ b/drivers/video/hitfb.c @@ -17,7 +17,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/nubus.h> #include <linux/init.h> diff --git a/drivers/video/hpfb.c b/drivers/video/hpfb.c index df23d1aff883..a39dbaa8566b 100644 --- a/drivers/video/hpfb.c +++ b/drivers/video/hpfb.c @@ -13,7 +13,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/init.h> #include <linux/fb.h> diff --git a/drivers/video/igafb.c b/drivers/video/igafb.c index ac176a8cf8c4..aa08b6d8afdc 100644 --- a/drivers/video/igafb.c +++ b/drivers/video/igafb.c @@ -34,7 +34,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/imsttfb.c b/drivers/video/imsttfb.c index 1749f3246dd7..f004fb3adf0a 100644 --- a/drivers/video/imsttfb.c +++ b/drivers/video/imsttfb.c @@ -22,7 +22,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/leofb.c b/drivers/video/leofb.c index 6b233e5f81e2..c24058a8d1ec 100644 --- a/drivers/video/leofb.c +++ b/drivers/video/leofb.c @@ -12,7 +12,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/macfb.c b/drivers/video/macfb.c index 78538935a9b9..d471d7a46799 100644 --- a/drivers/video/macfb.c +++ b/drivers/video/macfb.c @@ -25,7 +25,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/nubus.h> #include <linux/init.h> diff --git a/drivers/video/matrox/matroxfb_base.h b/drivers/video/matrox/matroxfb_base.h index 68344dda2fdf..20c627905c31 100644 --- a/drivers/video/matrox/matroxfb_base.h +++ b/drivers/video/matrox/matroxfb_base.h @@ -32,7 +32,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/console.h> diff --git a/drivers/video/mdacon.c b/drivers/video/mdacon.c index 98e58b46c628..bbb046178c1c 100644 --- a/drivers/video/mdacon.c +++ b/drivers/video/mdacon.c @@ -33,7 +33,7 @@ #include <linux/console_struct.h> #include <linux/string.h> #include <linux/kd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vt_kern.h> #include <linux/vt_buffer.h> #include <linux/selection.h> diff --git a/drivers/video/offb.c b/drivers/video/offb.c index 1a1b7a3db369..b0397b1f82f7 100644 --- a/drivers/video/offb.c +++ b/drivers/video/offb.c @@ -19,7 +19,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/p9100fb.c b/drivers/video/p9100fb.c index f8687d7a7c76..59d8791c96b9 100644 --- a/drivers/video/p9100fb.c +++ b/drivers/video/p9100fb.c @@ -11,7 +11,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/platinumfb.c b/drivers/video/platinumfb.c index 20ab5c4e59e8..34ef08881c37 100644 --- a/drivers/video/platinumfb.c +++ b/drivers/video/platinumfb.c @@ -24,7 +24,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/pm2fb.c b/drivers/video/pm2fb.c index a3ee01ea130f..8eee8643c12a 100644 --- a/drivers/video/pm2fb.c +++ b/drivers/video/pm2fb.c @@ -20,7 +20,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/promcon.c b/drivers/video/promcon.c index 9c7277b702a1..cc2cac9f1de9 100644 --- a/drivers/video/promcon.c +++ b/drivers/video/promcon.c @@ -12,7 +12,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/console.h> #include <linux/console_struct.h> diff --git a/drivers/video/q40fb.c b/drivers/video/q40fb.c index a5c68f070733..e76d6e97976e 100644 --- a/drivers/video/q40fb.c +++ b/drivers/video/q40fb.c @@ -3,7 +3,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/retz3fb.c b/drivers/video/retz3fb.c index 9f1be5adc7ba..73d3d489565e 100644 --- a/drivers/video/retz3fb.c +++ b/drivers/video/retz3fb.c @@ -26,7 +26,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/zorro.h> diff --git a/drivers/video/riva/fbdev.c b/drivers/video/riva/fbdev.c index b2f899a40026..fc3d7c17a03d 100644 --- a/drivers/video/riva/fbdev.c +++ b/drivers/video/riva/fbdev.c @@ -36,7 +36,7 @@ #include <linux/mm.h> #include <linux/selection.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/init.h> diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c index 2f4e2c1403f4..7fc1e0c71956 100644 --- a/drivers/video/sa1100fb.c +++ b/drivers/video/sa1100fb.c @@ -65,7 +65,7 @@ #include <linux/ctype.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <linux/fb.h> #include <linux/delay.h> diff --git a/drivers/video/sbusfb.c b/drivers/video/sbusfb.c index 4d5b66386d13..e68950bf401b 100644 --- a/drivers/video/sbusfb.c +++ b/drivers/video/sbusfb.c @@ -28,7 +28,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/sgivwfb.c b/drivers/video/sgivwfb.c index e1751e84e088..bf8d17e5409e 100644 --- a/drivers/video/sgivwfb.c +++ b/drivers/video/sgivwfb.c @@ -16,7 +16,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c index 592180c18810..e53a45e5c9eb 100644 --- a/drivers/video/sis/sis_main.c +++ b/drivers/video/sis/sis_main.c @@ -18,7 +18,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/console.h> diff --git a/drivers/video/skeletonfb.c b/drivers/video/skeletonfb.c index f6cd0a21e513..bac350b74a19 100644 --- a/drivers/video/skeletonfb.c +++ b/drivers/video/skeletonfb.c @@ -14,7 +14,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/init.h> diff --git a/drivers/video/sticon-bmode.c b/drivers/video/sticon-bmode.c index e401cbfcd9f1..67ad6167159a 100644 --- a/drivers/video/sticon-bmode.c +++ b/drivers/video/sticon-bmode.c @@ -67,7 +67,7 @@ this file *will* be replaced with it. You have been warned. #include <linux/console.h> #include <linux/string.h> #include <linux/kd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vt_kern.h> #include <linux/selection.h> #include <linux/ioport.h> diff --git a/drivers/video/sticore.c b/drivers/video/sticore.c index 56e7f43ce5f9..11f40694f01f 100644 --- a/drivers/video/sticore.c +++ b/drivers/video/sticore.c @@ -1,7 +1,7 @@ #include <linux/module.h> #include <linux/types.h> #include <linux/kernel.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/init.h> #include <asm/uaccess.h> diff --git a/drivers/video/stifb.c b/drivers/video/stifb.c index 661ff29c510c..27a28f10c9b9 100644 --- a/drivers/video/stifb.c +++ b/drivers/video/stifb.c @@ -28,7 +28,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/init.h> diff --git a/drivers/video/sun3fb.c b/drivers/video/sun3fb.c index 87936fc0a814..04e6c5167edf 100644 --- a/drivers/video/sun3fb.c +++ b/drivers/video/sun3fb.c @@ -32,7 +32,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/tcxfb.c b/drivers/video/tcxfb.c index dc23dd40571c..3633fc2e3ce1 100644 --- a/drivers/video/tcxfb.c +++ b/drivers/video/tcxfb.c @@ -13,7 +13,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/tdfxfb.c b/drivers/video/tdfxfb.c index d954dc02e85c..812c3f9c872f 100644 --- a/drivers/video/tdfxfb.c +++ b/drivers/video/tdfxfb.c @@ -61,7 +61,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/tgafb.c b/drivers/video/tgafb.c index 880f1d1db48d..9e41f7f3851e 100644 --- a/drivers/video/tgafb.c +++ b/drivers/video/tgafb.c @@ -34,7 +34,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/valkyriefb.c b/drivers/video/valkyriefb.c index 24a8b04a11bc..7f7bd3a1b998 100644 --- a/drivers/video/valkyriefb.c +++ b/drivers/video/valkyriefb.c @@ -44,7 +44,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index 11e803273193..01862992dc3e 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c @@ -14,7 +14,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/console.h> diff --git a/drivers/video/vfb.c b/drivers/video/vfb.c index b494e25c6919..a2d101945c32 100644 --- a/drivers/video/vfb.c +++ b/drivers/video/vfb.c @@ -14,7 +14,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vmalloc.h> #include <linux/delay.h> #include <linux/interrupt.h> diff --git a/drivers/video/vga16fb.c b/drivers/video/vga16fb.c index 35197da609f8..a1fa94d371e2 100644 --- a/drivers/video/vga16fb.c +++ b/drivers/video/vga16fb.c @@ -15,7 +15,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/fb.h> #include <linux/console.h> diff --git a/drivers/video/vgacon.c b/drivers/video/vgacon.c index 6268b1766644..0f341e2223f2 100644 --- a/drivers/video/vgacon.c +++ b/drivers/video/vgacon.c @@ -43,7 +43,7 @@ #include <linux/console_struct.h> #include <linux/string.h> #include <linux/kd.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/vt_kern.h> #include <linux/selection.h> #include <linux/spinlock.h> diff --git a/drivers/video/virgefb.c b/drivers/video/virgefb.c index 047482699a66..9fbafbaf468a 100644 --- a/drivers/video/virgefb.c +++ b/drivers/video/virgefb.c @@ -22,7 +22,7 @@ #include <linux/string.h> #include <linux/mm.h> #include <linux/tty.h> -#include <linux/malloc.h> +#include <linux/slab.h> #include <linux/delay.h> #include <linux/zorro.h> #include <linux/fb.h> |
