mirror of https://gitee.com/openkylin/linux.git
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:
commit
0ee7fb36f9
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue