Patch "mips: cm: Convert __mips_cm_l2sync_phys_base() to weak function" has been added to the 6.8-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

    mips: cm: Convert __mips_cm_l2sync_phys_base() to weak function

to the 6.8-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:
     mips-cm-convert-__mips_cm_l2sync_phys_base-to-weak-f.patch
and it can be found in the queue-6.8 subdirectory.

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



commit 29359357b4fbb28fe8f9cb243985e0645f63081e
Author: Serge Semin <fancer.lancer@xxxxxxxxx>
Date:   Mon Feb 26 13:54:21 2024 +0300

    mips: cm: Convert __mips_cm_l2sync_phys_base() to weak function
    
    [ Upstream commit 8bc8db2ab2832daabdd06feeabdd511dc9575bb6 ]
    
    The __mips_cm_l2sync_phys_base() and mips_cm_l2sync_phys_base() couple was
    introduced in commit 9f98f3dd0c51 ("MIPS: Add generic CM probe & access
    code") where the former method was a weak implementation of the later
    function. Such design pattern permitted to re-define the original method
    and to use the weak implementation in the new function. A similar approach
    was introduced in the framework of another arch-specific programmable
    interface: mips_cm_phys_base() and __mips_cm_phys_base(). The only
    difference is that the underscored method of the later couple was declared
    in the "asm/mips-cm.h" header file, but it wasn't done for the CM L2-sync
    methods in the subject. Due to the missing global function declaration
    the "missing prototype" warning was spotted in the framework of the commit
    9a2036724cd6 ("mips: mark local function static if possible") and fixed
    just be re-qualifying the weak method as static. Doing that broke what was
    originally implied by having the weak implementation globally defined.
    
    Let's fix the broken CM2 L2-sync arch-interface by dropping the static
    qualifier and, seeing the implemented pattern hasn't been used for over 10
    years but will be required soon (see the link for the discussion around
    it), converting it to a single weakly defined method:
    mips_cm_l2sync_phys_base().
    
    Fixes: 9a2036724cd6 ("mips: mark local function static if possible")
    Link: https://lore.kernel.org/linux-mips/20240215171740.14550-3-fancer.lancer@xxxxxxxxx
    Signed-off-by: Serge Semin <fancer.lancer@xxxxxxxxx>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/mips/include/asm/mips-cm.h b/arch/mips/include/asm/mips-cm.h
index 23c67c0871b17..6cc79296c8ef2 100644
--- a/arch/mips/include/asm/mips-cm.h
+++ b/arch/mips/include/asm/mips-cm.h
@@ -33,6 +33,19 @@ extern void __iomem *mips_cm_l2sync_base;
  */
 extern phys_addr_t __mips_cm_phys_base(void);
 
+/**
+ * mips_cm_l2sync_phys_base - retrieve the physical base address of the CM
+ *                            L2-sync region
+ *
+ * This function returns the physical base address of the Coherence Manager
+ * L2-cache only region. It provides a default implementation which reads the
+ * CMGCRL2OnlySyncBase register where available or returns a 4K region just
+ * behind the CM GCR base address. It may be overridden by platforms which
+ * determine this address in a different way by defining a function with the
+ * same prototype.
+ */
+extern phys_addr_t mips_cm_l2sync_phys_base(void);
+
 /*
  * mips_cm_is64 - determine CM register width
  *
diff --git a/arch/mips/kernel/mips-cm.c b/arch/mips/kernel/mips-cm.c
index 84b3affb9de88..268ac0b811e35 100644
--- a/arch/mips/kernel/mips-cm.c
+++ b/arch/mips/kernel/mips-cm.c
@@ -201,7 +201,7 @@ phys_addr_t __mips_cm_phys_base(void)
 phys_addr_t mips_cm_phys_base(void)
 	__attribute__((weak, alias("__mips_cm_phys_base")));
 
-static phys_addr_t __mips_cm_l2sync_phys_base(void)
+phys_addr_t __weak mips_cm_l2sync_phys_base(void)
 {
 	u32 base_reg;
 
@@ -217,9 +217,6 @@ static phys_addr_t __mips_cm_l2sync_phys_base(void)
 	return mips_cm_phys_base() + MIPS_CM_GCR_SIZE;
 }
 
-phys_addr_t mips_cm_l2sync_phys_base(void)
-	__attribute__((weak, alias("__mips_cm_l2sync_phys_base")));
-
 static void mips_cm_probe_l2sync(void)
 {
 	unsigned major_rev;




[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