Merge android-4.9.206(2be2d899) into msm-4.9
* refs/heads/tmp-2be2d899: Linux 4.9.206 net: fec: fix clock count mis-match platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer hwrng: stm32 - fix unbalanced pm_runtime_enable HID: core: check whether Usage Page item is after Usage ID items net: sched: fix `tc -s class show` no bstats on class with nolock subqueues sctp: cache netns in sctp_ep_common tipc: fix link name length check openvswitch: remove another BUG_ON() openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() slip: Fix use-after-free Read in slip_open openvswitch: fix flow command message size macvlan: schedule bc_work even if error media: atmel: atmel-isc: fix asd memory allocation pwm: Clear chip_data in pwm_put() net: macb: fix error format in dev_err() media: v4l2-ctrl: fix flags for DO_WHITE_BALANCE mei: bus: prefix device names on bus with the bus name USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P staging: rtl8192e: fix potential use after free clk: at91: fix update bit maps on CFG_MOR write mm, gup: add missing refcount overflow checks on x86 and s390 mtd: Remove a debug trace in mtdpart.c powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() scsi: libsas: Check SMP PHY control function result ACPI / APEI: Switch estatus pool to use vmalloc memory scsi: libsas: Support SATA PHY connection rate unmatch fixing during discovery iommu/amd: Fix NULL dereference bug in match_hid_uid net: dev: Use unsigned integer as an argument to left-shift sctp: don't compare hb_timer expire date before starting it net: fix possible overflow in __sk_mem_raise_allocated() sfc: initialise found bitmap in efx_ef10_mtd_probe tipc: fix skb may be leaky in tipc_link_input decnet: fix DN_IFREQ_SIZE ip_tunnel: Make none-tunnel-dst tunnel port work with lwtunnel sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe net/core/neighbour: fix kmemleak minimal reference count for hash tables net/core/neighbour: tell kmemleak about hash tables tipc: fix memory leak in tipc_nl_compat_publ_dump mtd: Check add_mtd_device() ret code lib/genalloc.c: include vmalloc.h drivers/base/platform.c: kmemleak ignore a known leak lib/genalloc.c: use vzalloc_node() to allocate the bitmap lib/genalloc.c: fix allocation of aligned buffer from non-aligned chunk vmscan: return NODE_RECLAIM_NOSCAN in node_reclaim() when CONFIG_NUMA is n ocfs2: clear journal dirty flag after shutdown journal net/wan/fsl_ucc_hdlc: Avoid double free in ucc_hdlc_probe() tipc: fix a missing check of genlmsg_put atl1e: checking the status of atl1e_write_phy_reg net: dsa: bcm_sf2: Propagate error value from mdio_write net: stmicro: fix a missing check of clk_prepare um: Make GCOV depend on !KCOV net/net_namespace: Check the return value of register_pernet_subsys() pwm: clps711x: Fix period calculation crypto: mxc-scc - fix build warnings on ARM64 powerpc/pseries: Fix node leak in update_lmb_associativity_index() powerpc/83xx: handle machine check caused by watchdog timer regulator: tps65910: fix a missing check of return value drbd: fix print_st_err()'s prototype to match the definition drbd: do not block when adjusting "disk-options" while IO is frozen drbd: reject attach of unsuitable uuids even if connected drbd: ignore "all zero" peer volume sizes in handshake powerpc/powernv/eeh/npu: Fix uninitialized variables in opal_pci_eeh_freeze_status vfio/spapr_tce: Get rid of possible infinite loop powerpc/44x/bamboo: Fix PCI range powerpc/mm: Make NULL pointer deferences explicit on bad page faults. powerpc/prom: fix early DEBUG messages ath6kl: Fix off by one error in scan completion ath6kl: Only use match sets when firmware supports it scsi: csiostor: fix incorrect dma device in case of vport scsi: qla2xxx: deadlock by configfs_depend_item RDMA/srp: Propagate ib_post_send() failures to the SCSI mid-layer openrisc: Fix broken paths to arch/or32 serial: max310x: Fix tx_empty() callback drivers/regulator: fix a missing check of return value powerpc/xmon: fix dump_segments() powerpc/book3s/32: fix number of bats in p/v_block_mapped() IB/qib: Fix an error code in qib_sdma_verbs_send() xfs: Fix bulkstat compat ioctls on x32 userspace. xfs: Align compat attrlist_by_handle with native implementation. gfs2: take jdata unstuff into account in do_grow dm flakey: Properly corrupt multi-page bios. HID: doc: fix wrong data structure reference for UHID_OUTPUT pinctrl: sh-pfc: sh7734: Fix shifted values in IPSR10 pinctrl: sh-pfc: sh7264: Fix PFCR3 and PFCR0 register configuration KVM: s390: unregister debug feature on failing arch init net/mlx5: Continue driver initialization despite debugfs failure pinctrl: xway: fix gpio-hog related boot issues xen/pciback: Check dev_data before using it HID: intel-ish-hid: fixes incorrect error handling btrfs: only track ref_heads in delayed_ref_updates mtd: rawnand: sunxi: Write pageprog related opcodes to WCMD_SET VSOCK: bind to random port for VMADDR_PORT_ANY gpiolib: Fix return value of gpio_to_desc() stub if !GPIOLIB microblaze: move "... is ready" messages to arch/microblaze/Makefile microblaze: adjust the help to the real behavior ubi: Do not drop UBI device reference before using ubi: Put MTD device after it is not used xfs: require both realtime inodes to mount rtl818x: fix potential use after free mwifiex: debugfs: correct histogram spacing, formatting mwifiex: fix potential NULL dereference and use after free crypto: user - support incremental algorithm dumps ACPI / LPSS: Ignore acpi_device_fix_up_power() return value ARM: ks8695: fix section mismatch warning PM / AVS: SmartReflex: NULL check before some freeing functions is not needed arm64: smp: Handle errors reported by the firmware arm64: mm: Prevent mismatched 52-bit VA support parisc: Fix HP SDC hpa address output parisc: Fix serio address output ARM: dts: imx53-voipac-dmm-668: Fix memory node duplication ARM: debug-imx: only define DEBUG_IMX_UART_PORT if needed scsi: lpfc: Fix dif and first burst use in write commands pwm: bcm-iproc: Prevent unloading the driver module while in use block: drbd: remove a stray unlock in __drbd_send_protocol() mac80211: fix station inactive_time shortly after boot scripts/gdb: fix debugging modules compiled with hot/cold partitioning watchdog: meson: Fix the wrong value of left time can: c_can: D_CAN: c_can_chip_config(): perform a sofware reset on open can: peak_usb: report bus recovery as well net: fec: add missed clk_disable_unprepare in remove clk: at91: avoid sleeping early reset: fix reset_control_ops kerneldoc comment clk: samsung: exynos5420: Preserve PLL configuration during suspend/resume ASoC: kirkwood: fix external clock probe defer ASoC: compress: fix unsigned integer overflow check Change-Id: I8a382830a699c25b466825c7a5a3e1b22f9d3a71 Signed-off-by: jianzhou <jianzhou@codeaurora.org>
This commit is contained in:
commit
7f79f5f5b8
132 changed files with 827 additions and 392 deletions
|
|
@ -160,7 +160,7 @@ them but you should handle them according to your needs.
|
|||
UHID_OUTPUT:
|
||||
This is sent if the HID device driver wants to send raw data to the I/O
|
||||
device on the interrupt channel. You should read the payload and forward it to
|
||||
the device. The payload is of type "struct uhid_data_req".
|
||||
the device. The payload is of type "struct uhid_output_req".
|
||||
This may be received even though you haven't received UHID_OPEN, yet.
|
||||
|
||||
UHID_GET_REPORT:
|
||||
|
|
|
|||
2
Makefile
2
Makefile
|
|
@ -1,6 +1,6 @@
|
|||
VERSION = 4
|
||||
PATCHLEVEL = 9
|
||||
SUBLEVEL = 205
|
||||
SUBLEVEL = 206
|
||||
EXTRAVERSION =
|
||||
NAME = Roaring Lionus
|
||||
|
||||
|
|
|
|||
|
|
@ -1355,21 +1355,21 @@ config DEBUG_OMAP2PLUS_UART
|
|||
depends on ARCH_OMAP2PLUS
|
||||
|
||||
config DEBUG_IMX_UART_PORT
|
||||
int "i.MX Debug UART Port Selection" if DEBUG_IMX1_UART || \
|
||||
DEBUG_IMX25_UART || \
|
||||
DEBUG_IMX21_IMX27_UART || \
|
||||
DEBUG_IMX31_UART || \
|
||||
DEBUG_IMX35_UART || \
|
||||
DEBUG_IMX50_UART || \
|
||||
DEBUG_IMX51_UART || \
|
||||
DEBUG_IMX53_UART || \
|
||||
DEBUG_IMX6Q_UART || \
|
||||
DEBUG_IMX6SL_UART || \
|
||||
DEBUG_IMX6SX_UART || \
|
||||
DEBUG_IMX6UL_UART || \
|
||||
DEBUG_IMX7D_UART
|
||||
int "i.MX Debug UART Port Selection"
|
||||
depends on DEBUG_IMX1_UART || \
|
||||
DEBUG_IMX25_UART || \
|
||||
DEBUG_IMX21_IMX27_UART || \
|
||||
DEBUG_IMX31_UART || \
|
||||
DEBUG_IMX35_UART || \
|
||||
DEBUG_IMX50_UART || \
|
||||
DEBUG_IMX51_UART || \
|
||||
DEBUG_IMX53_UART || \
|
||||
DEBUG_IMX6Q_UART || \
|
||||
DEBUG_IMX6SL_UART || \
|
||||
DEBUG_IMX6SX_UART || \
|
||||
DEBUG_IMX6UL_UART || \
|
||||
DEBUG_IMX7D_UART
|
||||
default 1
|
||||
depends on ARCH_MXC
|
||||
help
|
||||
Choose UART port on which kernel low-level debug messages
|
||||
should be output.
|
||||
|
|
|
|||
|
|
@ -17,12 +17,8 @@
|
|||
|
||||
memory@70000000 {
|
||||
device_type = "memory";
|
||||
reg = <0x70000000 0x20000000>;
|
||||
};
|
||||
|
||||
memory@b0000000 {
|
||||
device_type = "memory";
|
||||
reg = <0xb0000000 0x20000000>;
|
||||
reg = <0x70000000 0x20000000>,
|
||||
<0xb0000000 0x20000000>;
|
||||
};
|
||||
|
||||
regulators {
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ static struct i2c_board_info acs5k_i2c_devs[] __initdata = {
|
|||
},
|
||||
};
|
||||
|
||||
static void acs5k_i2c_init(void)
|
||||
static void __init acs5k_i2c_init(void)
|
||||
{
|
||||
/* The gpio interface */
|
||||
platform_device_register(&acs5k_i2c_device);
|
||||
|
|
|
|||
|
|
@ -687,6 +687,7 @@ secondary_startup:
|
|||
/*
|
||||
* Common entry point for secondary CPUs.
|
||||
*/
|
||||
bl __cpu_secondary_check52bitva
|
||||
bl __cpu_setup // initialise processor
|
||||
bl __enable_mmu
|
||||
ldr x8, =__secondary_switched
|
||||
|
|
@ -760,6 +761,31 @@ ENTRY(__enable_mmu)
|
|||
ret
|
||||
ENDPROC(__enable_mmu)
|
||||
|
||||
ENTRY(__cpu_secondary_check52bitva)
|
||||
#ifdef CONFIG_ARM64_52BIT_VA
|
||||
ldr_l x0, vabits_user
|
||||
cmp x0, #52
|
||||
b.ne 2f
|
||||
|
||||
mrs_s x0, SYS_ID_AA64MMFR2_EL1
|
||||
and x0, x0, #(0xf << ID_AA64MMFR2_LVA_SHIFT)
|
||||
cbnz x0, 2f
|
||||
|
||||
adr_l x0, va52mismatch
|
||||
mov w1, #1
|
||||
strb w1, [x0]
|
||||
dmb sy
|
||||
dc ivac, x0 // Invalidate potentially stale cache line
|
||||
|
||||
update_early_cpu_boot_status CPU_STUCK_IN_KERNEL, x0, x1
|
||||
1: wfe
|
||||
wfi
|
||||
b 1b
|
||||
|
||||
#endif
|
||||
2: ret
|
||||
ENDPROC(__cpu_secondary_check52bitva)
|
||||
|
||||
__no_granule_support:
|
||||
/* Indicate that this CPU can't boot and is stuck in the kernel */
|
||||
update_early_cpu_boot_status CPU_STUCK_IN_KERNEL, x1, x2
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ static int boot_secondary(unsigned int cpu, struct task_struct *idle)
|
|||
}
|
||||
|
||||
static DECLARE_COMPLETION(cpu_running);
|
||||
bool va52mismatch __ro_after_init;
|
||||
|
||||
int __cpu_up(unsigned int cpu, struct task_struct *idle)
|
||||
{
|
||||
|
|
@ -170,10 +171,15 @@ int __cpu_up(unsigned int cpu, struct task_struct *idle)
|
|||
|
||||
if (!cpu_online(cpu)) {
|
||||
pr_crit("CPU%u: failed to come online\n", cpu);
|
||||
|
||||
if (IS_ENABLED(CONFIG_ARM64_52BIT_VA) && va52mismatch)
|
||||
pr_crit("CPU%u: does not support 52-bit VAs\n", cpu);
|
||||
|
||||
ret = -EIO;
|
||||
}
|
||||
} else {
|
||||
pr_err("CPU%u: failed to boot: %d\n", cpu, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
secondary_data.task = NULL;
|
||||
|
|
|
|||
|
|
@ -75,19 +75,21 @@ archclean:
|
|||
|
||||
linux.bin linux.bin.gz linux.bin.ub: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||
@echo 'Kernel: $(boot)/$@ is ready' ' (#'`cat .version`')'
|
||||
|
||||
simpleImage.%: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||
@echo 'Kernel: $(boot)/$@ is ready' ' (#'`cat .version`')'
|
||||
|
||||
define archhelp
|
||||
echo '* linux.bin - Create raw binary'
|
||||
echo ' linux.bin.gz - Create compressed raw binary'
|
||||
echo ' linux.bin.ub - Create U-Boot wrapped raw binary'
|
||||
echo ' simpleImage.<dt> - ELF image with $(arch)/boot/dts/<dt>.dts linked in'
|
||||
echo ' - stripped elf with fdt blob'
|
||||
echo ' simpleImage.<dt>.unstrip - full ELF image with fdt blob'
|
||||
echo ' *_defconfig - Select default config from arch/microblaze/configs'
|
||||
echo ''
|
||||
echo ' simpleImage.<dt> - Create the following images with <dt>.dtb linked in'
|
||||
echo ' simpleImage.<dt> : raw image'
|
||||
echo ' simpleImage.<dt>.ub : raw image with U-Boot header'
|
||||
echo ' simpleImage.<dt>.unstrip: ELF (identical to vmlinux)'
|
||||
echo ' simpleImage.<dt>.strip : stripped ELF'
|
||||
echo ' Targets with <dt> embed a device tree blob inside the image'
|
||||
echo ' These targets support board with firmware that does not'
|
||||
echo ' support passing a device tree directly. Replace <dt> with the'
|
||||
|
|
|
|||
|
|
@ -8,15 +8,12 @@ OBJCOPYFLAGS := -R .note -R .comment -R .note.gnu.build-id -O binary
|
|||
|
||||
$(obj)/linux.bin: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
||||
|
||||
$(obj)/linux.bin.ub: $(obj)/linux.bin FORCE
|
||||
$(call if_changed,uimage)
|
||||
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
||||
|
||||
$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
|
||||
$(call if_changed,gzip)
|
||||
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
||||
|
||||
quiet_cmd_cp = CP $< $@$2
|
||||
cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
|
||||
|
|
@ -34,6 +31,5 @@ $(obj)/simpleImage.%: vmlinux FORCE
|
|||
$(call if_changed,objcopy)
|
||||
$(call if_changed,uimage)
|
||||
$(call if_changed,strip,.strip)
|
||||
@echo 'Kernel: $(UIMAGE_OUT) is ready' ' (#'`cat .version`')'
|
||||
|
||||
clean-files += simpleImage.*.unstrip linux.bin.ub dts/*.dtb
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ handler: ;\
|
|||
* occured. in fact they never do. if you need them use
|
||||
* values saved on stack (for SPR_EPC, SPR_ESR) or content
|
||||
* of r4 (for SPR_EEAR). for details look at EXCEPTION_HANDLE()
|
||||
* in 'arch/or32/kernel/head.S'
|
||||
* in 'arch/openrisc/kernel/head.S'
|
||||
*/
|
||||
|
||||
/* =====================================================[ exceptions] === */
|
||||
|
|
|
|||
|
|
@ -1596,7 +1596,7 @@ _string_esr_irq_bug:
|
|||
|
||||
/*
|
||||
* .data section should be page aligned
|
||||
* (look into arch/or32/kernel/vmlinux.lds)
|
||||
* (look into arch/openrisc/kernel/vmlinux.lds.S)
|
||||
*/
|
||||
.section .data,"aw"
|
||||
.align 8192
|
||||
|
|
|
|||
|
|
@ -268,8 +268,10 @@
|
|||
/* Outbound ranges, one memory and one IO,
|
||||
* later cannot be changed. Chip supports a second
|
||||
* IO range but we don't use it for now
|
||||
* The chip also supports a larger memory range but
|
||||
* it's not naturally aligned, so our code will break
|
||||
*/
|
||||
ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x40000000
|
||||
ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x20000000
|
||||
0x02000000 0x00000000 0x00000000 0x00000000 0xe0000000 0x00000000 0x00100000
|
||||
0x01000000 0x00000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
|
||||
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ extern int machine_check_e500(struct pt_regs *regs);
|
|||
extern int machine_check_e200(struct pt_regs *regs);
|
||||
extern int machine_check_47x(struct pt_regs *regs);
|
||||
int machine_check_8xx(struct pt_regs *regs);
|
||||
int machine_check_83xx(struct pt_regs *regs);
|
||||
|
||||
extern void cpu_down_flush_e500v2(void);
|
||||
extern void cpu_down_flush_e500mc(void);
|
||||
|
|
|
|||
|
|
@ -663,6 +663,8 @@
|
|||
#define SRR1_PROGTRAP 0x00020000 /* Trap */
|
||||
#define SRR1_PROGADDR 0x00010000 /* SRR0 contains subsequent addr */
|
||||
|
||||
#define SRR1_MCE_MCP 0x00080000 /* Machine check signal caused interrupt */
|
||||
|
||||
#define SPRN_HSRR0 0x13A /* Save/Restore Register 0 */
|
||||
#define SPRN_HSRR1 0x13B /* Save/Restore Register 1 */
|
||||
#define HSRR1_DENORM 0x00100000 /* Denorm exception */
|
||||
|
|
|
|||
|
|
@ -1162,6 +1162,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.machine_check = machine_check_generic,
|
||||
.platform = "ppc603",
|
||||
},
|
||||
#ifdef CONFIG_PPC_83xx
|
||||
{ /* e300c1 (a 603e core, plus some) on 83xx */
|
||||
.pvr_mask = 0x7fff0000,
|
||||
.pvr_value = 0x00830000,
|
||||
|
|
@ -1172,7 +1173,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
.machine_check = machine_check_generic,
|
||||
.machine_check = machine_check_83xx,
|
||||
.platform = "ppc603",
|
||||
},
|
||||
{ /* e300c2 (an e300c1 core, plus some, minus FPU) on 83xx */
|
||||
|
|
@ -1186,7 +1187,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
.machine_check = machine_check_generic,
|
||||
.machine_check = machine_check_83xx,
|
||||
.platform = "ppc603",
|
||||
},
|
||||
{ /* e300c3 (e300c1, plus one IU, half cache size) on 83xx */
|
||||
|
|
@ -1200,7 +1201,7 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
.machine_check = machine_check_generic,
|
||||
.machine_check = machine_check_83xx,
|
||||
.num_pmcs = 4,
|
||||
.oprofile_cpu_type = "ppc/e300",
|
||||
.oprofile_type = PPC_OPROFILE_FSL_EMB,
|
||||
|
|
@ -1217,12 +1218,13 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
.machine_check = machine_check_generic,
|
||||
.machine_check = machine_check_83xx,
|
||||
.num_pmcs = 4,
|
||||
.oprofile_cpu_type = "ppc/e300",
|
||||
.oprofile_type = PPC_OPROFILE_FSL_EMB,
|
||||
.platform = "ppc603",
|
||||
},
|
||||
#endif
|
||||
{ /* default match, we assume split I/D cache & TB (non-601)... */
|
||||
.pvr_mask = 0x00000000,
|
||||
.pvr_value = 0x00000000,
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ static void __init move_device_tree(void)
|
|||
p = __va(memblock_alloc(size, PAGE_SIZE));
|
||||
memcpy(p, initial_boot_params, size);
|
||||
initial_boot_params = p;
|
||||
DBG("Moved device tree to 0x%p\n", p);
|
||||
DBG("Moved device tree to 0x%px\n", p);
|
||||
}
|
||||
|
||||
DBG("<- move_device_tree\n");
|
||||
|
|
@ -651,7 +651,7 @@ void __init early_init_devtree(void *params)
|
|||
{
|
||||
phys_addr_t limit;
|
||||
|
||||
DBG(" -> early_init_devtree(%p)\n", params);
|
||||
DBG(" -> early_init_devtree(%px)\n", params);
|
||||
|
||||
/* Too early to BUG_ON(), do it by hand */
|
||||
if (!early_init_dt_verify(params))
|
||||
|
|
@ -711,7 +711,7 @@ void __init early_init_devtree(void *params)
|
|||
memblock_allow_resize();
|
||||
memblock_dump_all();
|
||||
|
||||
DBG("Phys. mem: %llx\n", memblock_phys_mem_size());
|
||||
DBG("Phys. mem: %llx\n", (unsigned long long)memblock_phys_mem_size());
|
||||
|
||||
/* We may need to relocate the flat tree, do it now.
|
||||
* FIXME .. and the initrd too? */
|
||||
|
|
|
|||
|
|
@ -521,21 +521,22 @@ void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
|
|||
switch (regs->trap) {
|
||||
case 0x300:
|
||||
case 0x380:
|
||||
printk(KERN_ALERT "Unable to handle kernel paging request for "
|
||||
"data at address 0x%08lx\n", regs->dar);
|
||||
pr_alert("BUG: %s at 0x%08lx\n",
|
||||
regs->dar < PAGE_SIZE ? "Kernel NULL pointer dereference" :
|
||||
"Unable to handle kernel data access", regs->dar);
|
||||
break;
|
||||
case 0x400:
|
||||
case 0x480:
|
||||
printk(KERN_ALERT "Unable to handle kernel paging request for "
|
||||
"instruction fetch\n");
|
||||
pr_alert("BUG: Unable to handle kernel instruction fetch%s",
|
||||
regs->nip < PAGE_SIZE ? " (NULL pointer?)\n" : "\n");
|
||||
break;
|
||||
case 0x600:
|
||||
printk(KERN_ALERT "Unable to handle kernel paging request for "
|
||||
"unaligned access at address 0x%08lx\n", regs->dar);
|
||||
pr_alert("BUG: Unable to handle kernel unaligned access at 0x%08lx\n",
|
||||
regs->dar);
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ALERT "Unable to handle kernel paging request for "
|
||||
"unknown fault\n");
|
||||
pr_alert("BUG: Unable to handle unknown paging fault at 0x%08lx\n",
|
||||
regs->dar);
|
||||
break;
|
||||
}
|
||||
printk(KERN_ALERT "Faulting instruction address: 0x%08lx\n",
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ struct batrange { /* stores address ranges mapped by BATs */
|
|||
phys_addr_t v_block_mapped(unsigned long va)
|
||||
{
|
||||
int b;
|
||||
for (b = 0; b < 4; ++b)
|
||||
for (b = 0; b < ARRAY_SIZE(bat_addrs); ++b)
|
||||
if (va >= bat_addrs[b].start && va < bat_addrs[b].limit)
|
||||
return bat_addrs[b].phys + (va - bat_addrs[b].start);
|
||||
return 0;
|
||||
|
|
@ -64,7 +64,7 @@ phys_addr_t v_block_mapped(unsigned long va)
|
|||
unsigned long p_block_mapped(phys_addr_t pa)
|
||||
{
|
||||
int b;
|
||||
for (b = 0; b < 4; ++b)
|
||||
for (b = 0; b < ARRAY_SIZE(bat_addrs); ++b)
|
||||
if (pa >= bat_addrs[b].phys
|
||||
&& pa < (bat_addrs[b].limit-bat_addrs[b].start)
|
||||
+bat_addrs[b].phys)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/of_platform.h>
|
||||
#include <linux/pci.h>
|
||||
|
||||
#include <asm/debug.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/hw_irq.h>
|
||||
#include <asm/ipic.h>
|
||||
|
|
@ -150,3 +151,19 @@ void __init mpc83xx_setup_arch(void)
|
|||
|
||||
mpc83xx_setup_pci();
|
||||
}
|
||||
|
||||
int machine_check_83xx(struct pt_regs *regs)
|
||||
{
|
||||
u32 mask = 1 << (31 - IPIC_MCP_WDT);
|
||||
|
||||
if (!(regs->msr & SRR1_MCE_MCP) || !(ipic_get_mcp_status() & mask))
|
||||
return machine_check_generic(regs);
|
||||
ipic_clear_mcp_status(mask);
|
||||
|
||||
if (debugger_fault_handler(regs))
|
||||
return 1;
|
||||
|
||||
die("Watchdog NMI Reset", regs, 0);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -546,8 +546,8 @@ static void pnv_eeh_get_phb_diag(struct eeh_pe *pe)
|
|||
static int pnv_eeh_get_phb_state(struct eeh_pe *pe)
|
||||
{
|
||||
struct pnv_phb *phb = pe->phb->private_data;
|
||||
u8 fstate;
|
||||
__be16 pcierr;
|
||||
u8 fstate = 0;
|
||||
__be16 pcierr = 0;
|
||||
s64 rc;
|
||||
int result = 0;
|
||||
|
||||
|
|
@ -585,8 +585,8 @@ static int pnv_eeh_get_phb_state(struct eeh_pe *pe)
|
|||
static int pnv_eeh_get_pe_state(struct eeh_pe *pe)
|
||||
{
|
||||
struct pnv_phb *phb = pe->phb->private_data;
|
||||
u8 fstate;
|
||||
__be16 pcierr;
|
||||
u8 fstate = 0;
|
||||
__be16 pcierr = 0;
|
||||
s64 rc;
|
||||
int result;
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue