Patch "powerpc/powermac: Use early_* IO variants in via_calibrate_decr()" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    powerpc/powermac: Use early_* IO variants in via_calibrate_decr()

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-powermac-use-early_-io-variants-in-via_calib.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 86bf187dffeea2ad9201347e69bc9091bec7c21b
Author: Benjamin Gray <bgray@xxxxxxxxxxxxx>
Date:   Thu Jul 6 11:08:16 2023 +1000

    powerpc/powermac: Use early_* IO variants in via_calibrate_decr()
    
    [ Upstream commit 86582e6189dd8f9f52c25d46c70fe5d111da6345 ]
    
    On a powermac platform, via the call path:
    
      start_kernel()
        time_init()
          ppc_md.calibrate_decr() (pmac_calibrate_decr)
            via_calibrate_decr()
    
    ioremap() and iounmap() are called. The unmap can enable interrupts
    unexpectedly (cond_resched() in vunmap_pmd_range()), which causes a
    warning later in the boot sequence in start_kernel().
    
    Use the early_* variants of these IO functions to prevent this.
    
    The issue is pre-existing, but is surfaced by commit 721255b9826b
    ("genirq: Use a maple tree for interrupt descriptor management").
    
    Signed-off-by: Benjamin Gray <bgray@xxxxxxxxxxxxx>
    Reviewed-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Link: https://msgid.link/20230706010816.72682-1-bgray@xxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/powerpc/platforms/powermac/time.c b/arch/powerpc/platforms/powermac/time.c
index 4c5790aff1b54..8633891b7aa58 100644
--- a/arch/powerpc/platforms/powermac/time.c
+++ b/arch/powerpc/platforms/powermac/time.c
@@ -26,8 +26,8 @@
 #include <linux/rtc.h>
 #include <linux/of_address.h>
 
+#include <asm/early_ioremap.h>
 #include <asm/sections.h>
-#include <asm/io.h>
 #include <asm/machdep.h>
 #include <asm/time.h>
 #include <asm/nvram.h>
@@ -182,7 +182,7 @@ static int __init via_calibrate_decr(void)
 		return 0;
 	}
 	of_node_put(vias);
-	via = ioremap(rsrc.start, resource_size(&rsrc));
+	via = early_ioremap(rsrc.start, resource_size(&rsrc));
 	if (via == NULL) {
 		printk(KERN_ERR "Failed to map VIA for timer calibration !\n");
 		return 0;
@@ -207,7 +207,7 @@ static int __init via_calibrate_decr(void)
 
 	ppc_tb_freq = (dstart - dend) * 100 / 6;
 
-	iounmap(via);
+	early_iounmap((void *)via, resource_size(&rsrc));
 
 	return 1;
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux