ACPI: PCI: Replace ACPI_DEBUG_PRINT() and ACPI_EXCEPTION()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 19 Feb 2021 18:16:10 +0000 (19:16 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 8 Mar 2021 15:51:08 +0000 (16:51 +0100)
The ACPI_DEBUG_PRINT() and ACPI_EXCEPTION() macros are used for
message printing in the ACPICA code and they should not be used
elsewhere.  Special configuration (either kernel command line or
sysfs-based) is needed to see the messages printed by them and
the format of those messages is also special and convoluted.

For this reason, replace all of the ACPI_DEBUG_PRINT() and
ACPI_EXCEPTION() instances in pci_link.c with acpi_handle_*() calls
relative to the ACPI handle of the given link device (wherever that
handle is readily available) or pr_debug() invocations.

While at it, make acpi_pci_link_check_current() print all messages
with pr_debug(), because all of them are in the same category (_CRS
return buffer issues) and they all should be printed at the same log
level.

Also make acpi_pci_link_set() use acpi_handle_*() for printing all
messages for consistency.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Hanjun Guo <guohanjun@huawei.com>
drivers/acpi/pci_link.c

index fb4c5632a232bf6a2c1d60a4639c5f9842ef3d2e..42ce619e2ad5bf04e1edf6ec516572acfc54bb06 100644 (file)
@@ -27,8 +27,6 @@
 
 #include "internal.h"
 
-#define _COMPONENT                     ACPI_PCI_COMPONENT
-ACPI_MODULE_NAME("pci_link");
 #define ACPI_PCI_LINK_CLASS            "pci_irq_routing"
 #define ACPI_PCI_LINK_DEVICE_NAME      "PCI Interrupt Link"
 #define ACPI_PCI_LINK_MAX_POSSIBLE     16
@@ -85,6 +83,7 @@ static acpi_status acpi_pci_link_check_possible(struct acpi_resource *resource,
                                                void *context)
 {
        struct acpi_pci_link *link = context;
+       acpi_handle handle = link->device->handle;
        u32 i;
 
        switch (resource->type) {
@@ -95,8 +94,8 @@ static acpi_status acpi_pci_link_check_possible(struct acpi_resource *resource,
                {
                        struct acpi_resource_irq *p = &resource->data.irq;
                        if (!p || !p->interrupt_count) {
-                               ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-                                                 "Blank _PRS IRQ resource\n"));
+                               acpi_handle_debug(handle,
+                                                 "Blank _PRS IRQ resource\n");
                                return AE_OK;
                        }
                        for (i = 0;
@@ -153,18 +152,18 @@ static acpi_status acpi_pci_link_check_possible(struct acpi_resource *resource,
 
 static int acpi_pci_link_get_possible(struct acpi_pci_link *link)
 {
+       acpi_handle handle = link->device->handle;
        acpi_status status;
 
-       status = acpi_walk_resources(link->device->handle, METHOD_NAME__PRS,
+       status = acpi_walk_resources(handle, METHOD_NAME__PRS,
                                     acpi_pci_link_check_possible, link);
        if (ACPI_FAILURE(status)) {
-               acpi_handle_debug(link->device->handle, "_PRS not present or invalid");
+               acpi_handle_debug(handle, "_PRS not present or invalid");
                return 0;
        }
 
-       ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-                         "Found %d possible IRQs\n",
-                         link->irq.possible_count));
+       acpi_handle_debug(handle, "Found %d possible IRQs\n",
+                         link->irq.possible_count);
 
        return 0;
 }
@@ -186,8 +185,7 @@ static acpi_status acpi_pci_link_check_current(struct acpi_resource *resource,
                                 * IRQ descriptors may have no IRQ# bits set,
                                 * particularly those those w/ _STA disabled
                                 */
-                               ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-                                                 "Blank _CRS IRQ resource\n"));
+                               pr_debug("Blank _CRS IRQ resource\n");
                                return AE_OK;
                        }
                        *irq = p->interrupts[0];
@@ -202,8 +200,7 @@ static acpi_status acpi_pci_link_check_current(struct acpi_resource *resource,
                                 * extended IRQ descriptors must
                                 * return at least 1 IRQ
                                 */
-                               printk(KERN_WARNING PREFIX
-                                             "Blank _CRS EXT IRQ resource\n");
+                               pr_debug("Blank _CRS EXT IRQ resource\n");
                                return AE_OK;
                        }
                        *irq = p->interrupts[0];
@@ -211,8 +208,8 @@ static acpi_status acpi_pci_link_check_current(struct acpi_resource *resource,
                }
                break;
        default:
-               printk(KERN_ERR PREFIX "_CRS resource type 0x%x isn't an IRQ\n",
-                      resource->type);
+               pr_debug("_CRS resource type 0x%x is not IRQ\n",
+                        resource->type);
                return AE_OK;
        }
 
@@ -228,8 +225,9 @@ static acpi_status acpi_pci_link_check_current(struct acpi_resource *resource,
  */
 static int acpi_pci_link_get_current(struct acpi_pci_link *link)
 {
-       int result = 0;
+       acpi_handle handle = link->device->handle;
        acpi_status status;
+       int result = 0;
        int irq = 0;
 
        link->irq.active = 0;
@@ -239,12 +237,12 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
                /* Query _STA, set link->device->status */
                result = acpi_bus_get_status(link->device);
                if (result) {
-                       printk(KERN_ERR PREFIX "Unable to read status\n");
+                       acpi_handle_err(handle, "Unable to read status\n");
                        goto end;
                }
 
                if (!link->device->status.enabled) {
-                       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link disabled\n"));
+                       acpi_handle_debug(handle, "Link disabled\n");
                        return 0;
                }
        }
@@ -253,22 +251,23 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
         * Query and parse _CRS to get the current IRQ assignment.
         */
 
-       status = acpi_walk_resources(link->device->handle, METHOD_NAME__CRS,
+       status = acpi_walk_resources(handle, METHOD_NAME__CRS,
                                     acpi_pci_link_check_current, &irq);
        if (ACPI_FAILURE(status)) {
-               ACPI_EXCEPTION((AE_INFO, status, "Evaluating _CRS"));
+               acpi_handle_warn(handle, "_CRS evaluation failed: %s\n",
+                                acpi_format_exception(status));
                result = -ENODEV;
                goto end;
        }
 
        if (acpi_strict && !irq) {
-               printk(KERN_ERR PREFIX "_CRS returned 0\n");
+               acpi_handle_err(handle, "_CRS returned 0\n");
                result = -ENODEV;
        }
 
        link->irq.active = irq;
 
-       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Link at IRQ %d \n", link->irq.active));
+       acpi_handle_debug(handle, "Link at IRQ %d \n", link->irq.active);
 
       end:
        return result;
@@ -276,13 +275,14 @@ static int acpi_pci_link_get_current(struct acpi_pci_link *link)
 
 static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
 {
-       int result;
-       acpi_status status;
        struct {
                struct acpi_resource res;
                struct acpi_resource end;
        } *resource;
        struct acpi_buffer buffer = { 0, NULL };
+       acpi_handle handle = link->device->handle;
+       acpi_status status;
+       int result;
 
        if (!irq)
                return -EINVAL;
@@ -329,7 +329,8 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
                /* ignore resource_source, it's optional */
                break;
        default:
-               printk(KERN_ERR PREFIX "Invalid Resource_type %d\n", link->irq.resource_type);
+               acpi_handle_err(handle, "Invalid resource type %d\n",
+                               link->irq.resource_type);
                result = -EINVAL;
                goto end;
 
@@ -342,7 +343,8 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
 
        /* check for total failure */
        if (ACPI_FAILURE(status)) {
-               ACPI_EXCEPTION((AE_INFO, status, "Evaluating _SRS"));
+               acpi_handle_warn(handle, "_SRS evaluation failed: %s",
+                                acpi_format_exception(status));
                result = -ENODEV;
                goto end;
        }
@@ -350,15 +352,11 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
        /* Query _STA, set device->status */
        result = acpi_bus_get_status(link->device);
        if (result) {
-               printk(KERN_ERR PREFIX "Unable to read status\n");
+               acpi_handle_err(handle, "Unable to read status\n");
                goto end;
        }
-       if (!link->device->status.enabled) {
-               printk(KERN_WARNING PREFIX
-                             "%s [%s] disabled and referenced, BIOS bug\n",
-                             acpi_device_name(link->device),
-                             acpi_device_bid(link->device));
-       }
+       if (!link->device->status.enabled)
+               acpi_handle_warn(handle, "Disabled and referenced, BIOS bug\n");
 
        /* Query _CRS, set link->irq.active */
        result = acpi_pci_link_get_current(link);
@@ -375,14 +373,12 @@ static int acpi_pci_link_set(struct acpi_pci_link *link, int irq)
                 * policy: when _CRS doesn't return what we just _SRS
                 * assume _SRS worked and override _CRS value.
                 */
-               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_handle_warn(handle, "BIOS reported IRQ %d, using IRQ %d\n",
+                                link->irq.active, irq);
                link->irq.active = irq;
        }
 
-       ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Set IRQ %d\n", link->irq.active));
+       acpi_handle_debug(handle, "Set IRQ %d\n", link->irq.active);
 
       end:
        kfree(resource);
@@ -656,9 +652,7 @@ int acpi_pci_link_allocate_irq(acpi_handle handle, int index, int *triggering,
                *polarity = link->irq.polarity;
        if (name)
                *name = acpi_device_bid(link->device);
-       ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-                         "Link %s is referenced\n",
-                         acpi_device_bid(link->device)));
+       acpi_handle_debug(handle, "Link is referenced\n");
        return link->irq.active;
 }
 
@@ -702,9 +696,7 @@ int acpi_pci_link_free_irq(acpi_handle handle)
         */
        link->refcnt--;
 #endif
-       ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-                         "Link %s is dereferenced\n",
-                         acpi_device_bid(link->device)));
+       acpi_handle_debug(handle, "Link is dereferenced\n");
 
        if (link->refcnt == 0)
                acpi_evaluate_object(link->device->handle, "_DIS", NULL, NULL);