diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index f4a36d3..6c62862 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -214,13 +214,13 @@
 		}
 	}
 	if (!device->power.states[state].flags.valid) {
-		ACPI_WARNING((AE_INFO, "Device does not support D%d", state));
+		printk(KERN_WARNING PREFIX "Device does not support D%d\n", state);
 		return_VALUE(-ENODEV);
 	}
 	if (device->parent && (state < device->parent->power.state)) {
-		ACPI_WARNING((AE_INFO,
+		printk(KERN_WARNING PREFIX
 			      "Cannot set device to a higher-powered"
-			      " state than parent"));
+			      " state than parent\n");
 		return_VALUE(-ENODEV);
 	}
 
@@ -263,9 +263,9 @@
 
       end:
 	if (result)
-		ACPI_WARNING((AE_INFO,
-			      "Transitioning device [%s] to D%d",
-			      device->pnp.bus_id, state));
+		printk(KERN_WARNING PREFIX
+			      "Transitioning device [%s] to D%d\n",
+			      device->pnp.bus_id, state);
 	else
 		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 				  "Device [%s] transitioned to D%d\n",
diff --git a/drivers/acpi/hotkey.c b/drivers/acpi/hotkey.c
index 37dcb1f..f5da971 100644
--- a/drivers/acpi/hotkey.c
+++ b/drivers/acpi/hotkey.c
@@ -983,7 +983,7 @@
 
 		}
 	} else {
-		ACPI_WARNING((AE_INFO, "Not supported"));
+		printk(KERN_WARNING "Not supported\n");
 		return_VALUE(-EINVAL);
 	}
 	return_VALUE(count);
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 4cabc51..9010653 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -269,8 +269,8 @@
 						 entry->link.index, triggering,
 						 polarity, link);
 		if (irq < 0) {
-			ACPI_WARNING((AE_INFO,
-				      "Invalid IRQ link routing entry"));
+			printk(KERN_WARNING PREFIX
+				      "Invalid IRQ link routing entry\n");
 			return_VALUE(-1);
 		}
 	} else {
@@ -379,8 +379,8 @@
 	}
 
 	if (irq < 0) {
-		ACPI_WARNING((AE_INFO, "Unable to derive IRQ for device %s",
-			      pci_name(dev)));
+		printk(KERN_WARNING PREFIX "Unable to derive IRQ for device %s\n",
+			      pci_name(dev));
 		return_VALUE(-1);
 	}
 
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 415b262..6d903bf 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -116,15 +116,15 @@
 		{
 			struct acpi_resource_irq *p = &resource->data.irq;
 			if (!p || !p->interrupt_count) {
-				ACPI_WARNING((AE_INFO, "Blank IRQ resource"));
+				printk(KERN_WARNING PREFIX "Blank IRQ resource\n");
 				return_ACPI_STATUS(AE_OK);
 			}
 			for (i = 0;
 			     (i < p->interrupt_count
 			      && i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) {
 				if (!p->interrupts[i]) {
-					ACPI_WARNING((AE_INFO, "Invalid IRQ %d",
-						      p->interrupts[i]));
+					printk(KERN_WARNING PREFIX "Invalid IRQ %d\n",
+						      p->interrupts[i]);
 					continue;
 				}
 				link->irq.possible[i] = p->interrupts[i];
@@ -140,16 +140,16 @@
 			struct acpi_resource_extended_irq *p =
 			    &resource->data.extended_irq;
 			if (!p || !p->interrupt_count) {
-				ACPI_WARNING((AE_INFO,
-					      "Blank EXT IRQ resource"));
+				printk(KERN_WARNING PREFIX
+					      "Blank EXT IRQ resource\n");
 				return_ACPI_STATUS(AE_OK);
 			}
 			for (i = 0;
 			     (i < p->interrupt_count
 			      && i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) {
 				if (!p->interrupts[i]) {
-					ACPI_WARNING((AE_INFO, "Invalid IRQ %d",
-						      p->interrupts[i]));
+					printk(KERN_WARNING PREFIX "Invalid IRQ %d\n",
+						      p->interrupts[i]);
 					continue;
 				}
 				link->irq.possible[i] = p->interrupts[i];
@@ -223,8 +223,8 @@
 				 * extended IRQ descriptors must
 				 * return at least 1 IRQ
 				 */
-				ACPI_WARNING((AE_INFO,
-					      "Blank EXT IRQ resource"));
+				printk(KERN_WARNING PREFIX
+					      "Blank EXT IRQ resource\n");
 				return_ACPI_STATUS(AE_OK);
 			}
 			*irq = p->interrupts[0];
@@ -381,10 +381,10 @@
 		goto end;
 	}
 	if (!link->device->status.enabled) {
-		ACPI_WARNING((AE_INFO,
-			      "%s [%s] disabled and referenced, BIOS bug",
+		printk(KERN_WARNING PREFIX
+			      "%s [%s] disabled and referenced, BIOS bug\n",
 			      acpi_device_name(link->device),
-			      acpi_device_bid(link->device)));
+			      acpi_device_bid(link->device));
 	}
 
 	/* Query _CRS, set link->irq.active */
@@ -402,10 +402,10 @@
 		 * policy: when _CRS doesn't return what we just _SRS
 		 * assume _SRS worked and override _CRS value.
 		 */
-		ACPI_WARNING((AE_INFO,
-			      "%s [%s] BIOS reported IRQ %d, using IRQ %d",
+		printk(KERN_WARNING PREFIX
+			      "%s [%s] BIOS reported IRQ %d, using IRQ %d\n",
 			      acpi_device_name(link->device),
-			      acpi_device_bid(link->device), link->irq.active, irq));
+			      acpi_device_bid(link->device), link->irq.active, irq);
 		link->irq.active = irq;
 	}
 
@@ -555,8 +555,8 @@
 	 */
 	if (i == link->irq.possible_count) {
 		if (acpi_strict)
-			ACPI_WARNING((AE_INFO, "_CRS %d not found"
-				      " in _PRS", link->irq.active));
+			printk(KERN_WARNING PREFIX "_CRS %d not found"
+				      " in _PRS\n", link->irq.active);
 		link->irq.active = 0;
 	}
 
diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
index 5712803..43688c8 100644
--- a/drivers/acpi/power.c
+++ b/drivers/acpi/power.c
@@ -105,7 +105,7 @@
 
 	result = acpi_bus_get_device(handle, &device);
 	if (result) {
-		ACPI_WARNING((AE_INFO, "Getting context [%p]", handle));
+		printk(KERN_WARNING PREFIX "Getting context [%p]\n", handle);
 		return_VALUE(result);
 	}
 
@@ -441,8 +441,8 @@
 	device->power.state = state;
       end:
 	if (result)
-		ACPI_WARNING((AE_INFO, "Transitioning device [%s] to D%d",
-			      device->pnp.bus_id, state));
+		printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n",
+			      device->pnp.bus_id, state);
 
 	return_VALUE(result);
 }
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c
index 97856ad..2de40bd 100644
--- a/drivers/acpi/processor_throttling.c
+++ b/drivers/acpi/processor_throttling.c
@@ -196,7 +196,7 @@
 	}
 	/* TBD: Support duty_cycle values that span bit 4. */
 	else if ((pr->throttling.duty_offset + pr->throttling.duty_width) > 4) {
-		ACPI_WARNING((AE_INFO, "duty_cycle spans bit 4"));
+		printk(KERN_WARNING PREFIX "duty_cycle spans bit 4\n");
 		return_VALUE(0);
 	}
 
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 44fffe1..6e9157a 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -384,7 +384,7 @@
 			tz->trips.passive.flags.valid = 0;
 
 		if (!tz->trips.passive.flags.valid)
-			ACPI_WARNING((AE_INFO, "Invalid passive threshold"));
+			printk(KERN_WARNING PREFIX "Invalid passive threshold\n");
 		else
 			ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 					  "Found passive threshold [%lu]\n",
@@ -469,7 +469,7 @@
 		return_VALUE(-EINVAL);
 
 	if (tz->temperature >= tz->trips.critical.temperature) {
-		ACPI_WARNING((AE_INFO, "Critical trip point"));
+		printk(KERN_WARNING PREFIX "Critical trip point\n");
 		tz->trips.critical.flags.enabled = 1;
 	} else if (tz->trips.critical.flags.enabled)
 		tz->trips.critical.flags.enabled = 0;
@@ -500,7 +500,7 @@
 		return_VALUE(-EINVAL);
 
 	if (tz->temperature >= tz->trips.hot.temperature) {
-		ACPI_WARNING((AE_INFO, "Hot trip point"));
+		printk(KERN_WARNING PREFIX "Hot trip point\n");
 		tz->trips.hot.flags.enabled = 1;
 	} else if (tz->trips.hot.flags.enabled)
 		tz->trips.hot.flags.enabled = 0;
@@ -640,10 +640,10 @@
 						       handles[j],
 						       ACPI_STATE_D0);
 				if (result) {
-					ACPI_WARNING((AE_INFO,
-						      "Unable to turn cooling device [%p] 'on'",
+					printk(KERN_WARNING PREFIX
+						      "Unable to turn cooling device [%p] 'on'\n",
 						      active->devices.
-						      handles[j]));
+						      handles[j]);
 					continue;
 				}
 				active->flags.enabled = 1;
@@ -665,9 +665,9 @@
 			result = acpi_bus_set_power(active->devices.handles[j],
 						    ACPI_STATE_D3);
 			if (result) {
-				ACPI_WARNING((AE_INFO,
-					      "Unable to turn cooling device [%p] 'off'",
-					      active->devices.handles[j]));
+				printk(KERN_WARNING PREFIX
+					      "Unable to turn cooling device [%p] 'off'\n",
+					      active->devices.handles[j]);
 				continue;
 			}
 			active->flags.enabled = 0;
diff --git a/drivers/acpi/utilities/utmisc.c b/drivers/acpi/utilities/utmisc.c
index 58daa37..dcb4975 100644
--- a/drivers/acpi/utilities/utmisc.c
+++ b/drivers/acpi/utilities/utmisc.c
@@ -978,7 +978,7 @@
 	acpi_os_vprintf(format, args);
 	acpi_os_printf(" [%X]\n", ACPI_CA_VERSION);
 }
-EXPORT_SYMBOL(acpi_ut_warning);
+
 void ACPI_INTERNAL_VAR_XFACE
 acpi_ut_info(char *module_name, u32 line_number, char *format, ...)
 {
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index ce093d4..040ff47 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -62,25 +62,25 @@
 
 	if (!package || (package->type != ACPI_TYPE_PACKAGE)
 	    || (package->package.count < 1)) {
-		ACPI_WARNING((AE_INFO, "Invalid package argument"));
+		printk(KERN_WARNING PREFIX "Invalid package argument\n");
 		return_ACPI_STATUS(AE_BAD_PARAMETER);
 	}
 
 	if (!format || !format->pointer || (format->length < 1)) {
-		ACPI_WARNING((AE_INFO, "Invalid format argument"));
+		printk(KERN_WARNING PREFIX "Invalid format argument\n");
 		return_ACPI_STATUS(AE_BAD_PARAMETER);
 	}
 
 	if (!buffer) {
-		ACPI_WARNING((AE_INFO, "Invalid buffer argument"));
+		printk(KERN_WARNING PREFIX "Invalid buffer argument\n");
 		return_ACPI_STATUS(AE_BAD_PARAMETER);
 	}
 
 	format_count = (format->length / sizeof(char)) - 1;
 	if (format_count > package->package.count) {
-		ACPI_WARNING((AE_INFO, "Format specifies more objects [%d]"
-			      " than exist in package [%d].",
-			      format_count, package->package.count));
+		printk(KERN_WARNING PREFIX "Format specifies more objects [%d]"
+			      " than exist in package [%d].\n",
+			      format_count, package->package.count);
 		return_ACPI_STATUS(AE_BAD_DATA);
 	}
 
@@ -112,10 +112,10 @@
 				tail_offset += sizeof(char *);
 				break;
 			default:
-				ACPI_WARNING((AE_INFO, "Invalid package element"
+				printk(KERN_WARNING PREFIX "Invalid package element"
 					      " [%d]: got number, expecing"
-					      " [%c]",
-					      i, format_string[i]));
+					      " [%c]\n",
+					      i, format_string[i]);
 				return_ACPI_STATUS(AE_BAD_DATA);
 				break;
 			}
@@ -138,10 +138,10 @@
 				tail_offset += sizeof(u8 *);
 				break;
 			default:
-				ACPI_WARNING((AE_INFO, "Invalid package element"
+				printk(KERN_WARNING PREFIX "Invalid package element"
 					      " [%d] got string/buffer,"
-					      " expecing [%c]",
-					      i, format_string[i]));
+					      " expecing [%c]\n",
+					      i, format_string[i]);
 				return_ACPI_STATUS(AE_BAD_DATA);
 				break;
 			}
