A few minor MIPS fixes:

- Provide struct pt_regs * from get_irq_regs() to kgdb_nmicallback()
   when handling an IPI triggered by kgdb_roundup_cpus(), matching the
   behavior of other architectures & resolving kgdb issues for SMP
   systems.
 
 - Defer a pointer dereference until after a NULL check in the
   irq_shutdown callback for SGI IP27 HUB interrupts.
 
 - A defconfig update for the MSCC Ocelot to enable some necessary
   drivers.
 -----BEGIN PGP SIGNATURE-----
 
 iIsEABYIADMWIQRgLjeFAZEXQzy86/s+p5+stXUA3QUCXK0n2BUccGF1bC5idXJ0
 b25AbWlwcy5jb20ACgkQPqefrLV1AN3rCAD/QLvPpE1YhmJ4Gd6MOEM2HHC15HHR
 U0ROHAEO3+ZwZf4A/3aBKZMtEKrLJnxG+MEqhuDMtIu//J6kGSpOpMZ5y7YJ
 =zRUT
 -----END PGP SIGNATURE-----

Merge tag 'mips_fixes_5.1_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS fixes from Paul Burton:
 "A few minor MIPS fixes:

   - Provide struct pt_regs * from get_irq_regs() to kgdb_nmicallback()
     when handling an IPI triggered by kgdb_roundup_cpus(), matching the
     behavior of other architectures & resolving kgdb issues for SMP
     systems.

   - Defer a pointer dereference until after a NULL check in the
     irq_shutdown callback for SGI IP27 HUB interrupts.

   - A defconfig update for the MSCC Ocelot to enable some necessary
     drivers"

* tag 'mips_fixes_5.1_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
  MIPS: generic: Add switchdev, pinctrl and fit to ocelot_defconfig
  MIPS: SGI-IP27: Fix use of unchecked pointer in shutdown_bridge_irq
  MIPS: KGDB: fix kgdb support for SMP platforms.
This commit is contained in:
Linus Torvalds 2019-04-09 16:27:18 -10:00
commit 0ee7fb36f9
3 changed files with 11 additions and 3 deletions

View File

@ -1,6 +1,10 @@
# require CONFIG_CPU_MIPS32_R2=y # require CONFIG_CPU_MIPS32_R2=y
CONFIG_LEGACY_BOARD_OCELOT=y CONFIG_LEGACY_BOARD_OCELOT=y
CONFIG_FIT_IMAGE_FDT_OCELOT=y
CONFIG_BRIDGE=y
CONFIG_GENERIC_PHY=y
CONFIG_MTD=y CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_CMDLINE_PARTS=y
@ -19,6 +23,8 @@ CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_NET_SWITCHDEV=y
CONFIG_NET_DSA=y
CONFIG_MSCC_OCELOT_SWITCH=y CONFIG_MSCC_OCELOT_SWITCH=y
CONFIG_MSCC_OCELOT_SWITCH_OCELOT=y CONFIG_MSCC_OCELOT_SWITCH_OCELOT=y
CONFIG_MDIO_MSCC_MIIM=y CONFIG_MDIO_MSCC_MIIM=y
@ -35,6 +41,8 @@ CONFIG_SPI_DESIGNWARE=y
CONFIG_SPI_DW_MMIO=y CONFIG_SPI_DW_MMIO=y
CONFIG_SPI_SPIDEV=y CONFIG_SPI_SPIDEV=y
CONFIG_PINCTRL_OCELOT=y
CONFIG_GPIO_SYSFS=y CONFIG_GPIO_SYSFS=y
CONFIG_POWER_RESET=y CONFIG_POWER_RESET=y

View File

@ -33,6 +33,7 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/sigcontext.h> #include <asm/sigcontext.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/irq_regs.h>
static struct hard_trap_info { static struct hard_trap_info {
unsigned char tt; /* Trap type code for MIPS R3xxx and R4xxx */ unsigned char tt; /* Trap type code for MIPS R3xxx and R4xxx */
@ -214,7 +215,7 @@ void kgdb_call_nmi_hook(void *ignored)
old_fs = get_fs(); old_fs = get_fs();
set_fs(KERNEL_DS); set_fs(KERNEL_DS);
kgdb_nmicallback(raw_smp_processor_id(), NULL); kgdb_nmicallback(raw_smp_processor_id(), get_irq_regs());
set_fs(old_fs); set_fs(old_fs);
} }

View File

@ -118,7 +118,6 @@ static void shutdown_bridge_irq(struct irq_data *d)
{ {
struct hub_irq_data *hd = irq_data_get_irq_chip_data(d); struct hub_irq_data *hd = irq_data_get_irq_chip_data(d);
struct bridge_controller *bc; struct bridge_controller *bc;
int pin = hd->pin;
if (!hd) if (!hd)
return; return;
@ -126,7 +125,7 @@ static void shutdown_bridge_irq(struct irq_data *d)
disable_hub_irq(d); disable_hub_irq(d);
bc = hd->bc; bc = hd->bc;
bridge_clr(bc, b_int_enable, (1 << pin)); bridge_clr(bc, b_int_enable, (1 << hd->pin));
bridge_read(bc, b_wid_tflush); bridge_read(bc, b_wid_tflush);
} }