git: 9front

Download patch

ref: 1b26d1b08fe0065e5c532e065aa4238eaae25f95
parent: eb648e8266a6081378db01578f1e2643d911702f
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sun Jul 3 08:10:27 EDT 2022

imx8: less stupid pci interrupt handler

--- a/sys/src/9/imx8/pciimx.c
+++ b/sys/src/9/imx8/pciimx.c
@@ -248,7 +248,7 @@
 {
 	Ctlr *ctlr = arg;
 	Intvec *vec;
-	u32int status, mask;
+	u32int status;
 
 	status = ctlr->dbi[MSI_CTRL_INT_0_STATUS];
 	if(status == 0)
@@ -256,8 +256,8 @@
 	ctlr->dbi[MSI_CTRL_INT_0_STATUS] = status;
 
 	ilock(ctlr);
-	for(vec = ctlr->vec, mask = 1; vec < &ctlr->vec[nelem(ctlr->vec)]; vec++, mask <<= 1){
-		if((status & mask) != 0 && vec->f != nil)
+	for(vec = ctlr->vec; status != 0 && vec < &ctlr->vec[nelem(ctlr->vec)]; vec++, status >>= 1){
+		if((status & 1) != 0 && vec->f != nil)
 			(*vec->f)(ureg, vec->a);
 	}
 	iunlock(ctlr);
--