PCI/AER: Use for_each_set_bit() to simplify code
Simplify error counting code by using for_each_set_bit() library function. Link: https://lore.kernel.org/r/20190827151823.75312-1-andriy.shevchenko@linux.intel.com Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
This commit is contained in:
Родитель
6458b438eb
Коммит
6a8c97345a
|
@ -15,6 +15,7 @@
|
||||||
#define pr_fmt(fmt) "AER: " fmt
|
#define pr_fmt(fmt) "AER: " fmt
|
||||||
#define dev_fmt pr_fmt
|
#define dev_fmt pr_fmt
|
||||||
|
|
||||||
|
#include <linux/bitops.h>
|
||||||
#include <linux/cper.h>
|
#include <linux/cper.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/pci-acpi.h>
|
#include <linux/pci-acpi.h>
|
||||||
|
@ -716,7 +717,8 @@ const struct attribute_group aer_stats_attr_group = {
|
||||||
static void pci_dev_aer_stats_incr(struct pci_dev *pdev,
|
static void pci_dev_aer_stats_incr(struct pci_dev *pdev,
|
||||||
struct aer_err_info *info)
|
struct aer_err_info *info)
|
||||||
{
|
{
|
||||||
int status, i, max = -1;
|
unsigned long status = info->status & ~info->mask;
|
||||||
|
int i, max = -1;
|
||||||
u64 *counter = NULL;
|
u64 *counter = NULL;
|
||||||
struct aer_stats *aer_stats = pdev->aer_stats;
|
struct aer_stats *aer_stats = pdev->aer_stats;
|
||||||
|
|
||||||
|
@ -741,9 +743,7 @@ static void pci_dev_aer_stats_incr(struct pci_dev *pdev,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
status = (info->status & ~info->mask);
|
for_each_set_bit(i, &status, max)
|
||||||
for (i = 0; i < max; i++)
|
|
||||||
if (status & (1 << i))
|
|
||||||
counter[i]++;
|
counter[i]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -776,14 +776,11 @@ static void __print_tlp_header(struct pci_dev *dev,
|
||||||
static void __aer_print_error(struct pci_dev *dev,
|
static void __aer_print_error(struct pci_dev *dev,
|
||||||
struct aer_err_info *info)
|
struct aer_err_info *info)
|
||||||
{
|
{
|
||||||
int i, status;
|
unsigned long status = info->status & ~info->mask;
|
||||||
const char *errmsg = NULL;
|
const char *errmsg = NULL;
|
||||||
status = (info->status & ~info->mask);
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 32; i++) {
|
|
||||||
if (!(status & (1 << i)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
|
for_each_set_bit(i, &status, 32) {
|
||||||
if (info->severity == AER_CORRECTABLE)
|
if (info->severity == AER_CORRECTABLE)
|
||||||
errmsg = i < ARRAY_SIZE(aer_correctable_error_string) ?
|
errmsg = i < ARRAY_SIZE(aer_correctable_error_string) ?
|
||||||
aer_correctable_error_string[i] : NULL;
|
aer_correctable_error_string[i] : NULL;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче