All of lore.kernel.org
 help / color / mirror / Atom feed
* [bug report] iommu: dart: Add t8110 DART support
@ 2023-01-26  9:26 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2023-01-26  9:26 UTC (permalink / raw)
  To: marcan; +Cc: asahi, iommu

Hello Hector Martin,

The patch d8bcc870d99d: "iommu: dart: Add t8110 DART support" from
Jan 13, 2023, leads to the following Smatch static checker warning:

	drivers/iommu/apple-dart.c:991 apple_dart_t8110_irq()
	warn: duplicate check 'error_code == ((((1))) << (3))' (previous on line 989)

drivers/iommu/apple-dart.c
    972 static irqreturn_t apple_dart_t8110_irq(int irq, void *dev)
    973 {
    974         struct apple_dart *dart = dev;
    975         const char *fault_name = NULL;
    976         u32 error = readl(dart->regs + DART_T8110_ERROR);
    977         u32 error_code = FIELD_GET(DART_T8110_ERROR_CODE, error);
    978         u32 addr_lo = readl(dart->regs + DART_T8110_ERROR_ADDR_LO);
    979         u32 addr_hi = readl(dart->regs + DART_T8110_ERROR_ADDR_HI);
    980         u64 addr = addr_lo | (((u64)addr_hi) << 32);
    981         u8 stream_idx = FIELD_GET(DART_T8110_ERROR_STREAM, error);
    982 
    983         if (!(error & DART_T8110_ERROR_FLAG))
    984                 return IRQ_NONE;
    985 
    986         /* there should only be a single bit set but let's use == to be sure */
    987         if (error_code == DART_T8110_ERROR_READ_FAULT)
    988                 fault_name = "READ FAULT";
    989         else if (error_code == DART_T8110_ERROR_WRITE_FAULT)
    990                 fault_name = "WRITE FAULT";
--> 991         else if (error_code == DART_T8110_ERROR_NO_PTE)

DART_T8110_ERROR_NO_PTE and DART_T8110_ERROR_WRITE_FAULT are both BIT(3).

    992                 fault_name = "NO PTE FOR IOVA";
    993         else if (error_code == DART_T8110_ERROR_NO_PMD)
    994                 fault_name = "NO PMD FOR IOVA";
    995         else if (error_code == DART_T8110_ERROR_NO_PGD)
    996                 fault_name = "NO PGD FOR IOVA";
    997         else if (error_code == DART_T8110_ERROR_NO_TTBR)
    998                 fault_name = "NO TTBR FOR IOVA";
    999         else
    1000                 fault_name = "unknown";
    1001 
    1002         dev_err_ratelimited(
    1003                 dart->dev,
    1004                 "translation fault: status:0x%x stream:%d code:0x%x (%s) at 0x%llx",
    1005                 error, stream_idx, error_code, fault_name, addr);
    1006 
    1007         writel(error, dart->regs + DART_T8110_ERROR);
    1008         return IRQ_HANDLED;
    1009 }

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-01-26  9:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-26  9:26 [bug report] iommu: dart: Add t8110 DART support Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.