Patch "powerpc/pseries: Only register vio drivers if vio bus exists" has been added to the 5.10-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/pseries: Only register vio drivers if vio bus exists

to the 5.10-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-pseries-only-register-vio-drivers-if-vio-bus.patch
and it can be found in the queue-5.10 subdirectory.

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



commit e13beda1163306667e00871d0a4d5ab3ac722e76
Author: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
Date:   Tue Mar 16 12:09:38 2021 +1100

    powerpc/pseries: Only register vio drivers if vio bus exists
    
    [ Upstream commit 11d92156f7a862091009d7655d19c1e7de37fc7a ]
    
    The vio bus is a fake bus, which we use on pseries LPARs (guests) to
    discover devices provided by the hypervisor. There's no need or sense
    in creating the vio bus on bare metal systems.
    
    Which is why commit 4336b9337824 ("powerpc/pseries: Make vio and
    ibmebus initcalls pseries specific") made the initialisation of the
    vio bus only happen in LPARs.
    
    However as a result of that commit we now see errors at boot on bare
    metal systems:
    
      Driver 'hvc_console' was unable to register with bus_type 'vio' because the bus was not initialized.
      Driver 'tpm_ibmvtpm' was unable to register with bus_type 'vio' because the bus was not initialized.
    
    This happens because those drivers are built-in, and are calling
    vio_register_driver(). It in turn calls driver_register() with a
    reference to vio_bus_type, but we haven't registered vio_bus_type with
    the driver core.
    
    Fix it by also guarding vio_register_driver() with a check to see if
    we are on pseries.
    
    Fixes: 4336b9337824 ("powerpc/pseries: Make vio and ibmebus initcalls pseries specific")
    Reported-by: Paul Menzel <pmenzel@xxxxxxxxxxxxx>
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Tested-by: Paul Menzel <pmenzel@xxxxxxxxxxxxx>
    Reviewed-by: Tyrel Datwyler <tyreld@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20210316010938.525657-1-mpe@xxxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/powerpc/platforms/pseries/vio.c b/arch/powerpc/platforms/pseries/vio.c
index b2797cfe4e2b..68276e05502b 100644
--- a/arch/powerpc/platforms/pseries/vio.c
+++ b/arch/powerpc/platforms/pseries/vio.c
@@ -1286,6 +1286,10 @@ static int vio_bus_remove(struct device *dev)
 int __vio_register_driver(struct vio_driver *viodrv, struct module *owner,
 			  const char *mod_name)
 {
+	// vio_bus_type is only initialised for pseries
+	if (!machine_is(pseries))
+		return -ENODEV;
+
 	pr_debug("%s: driver %s registering\n", __func__, viodrv->name);
 
 	/* fill in 'struct driver' fields */



[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