Port-evbmips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ERLITE frozen in rc script after switching to GCC 5.4



On 2016/10/24 19:01, Nick Hudson wrote:
I wonder if the stuff in

    sys/arch/mips/mips/mips_fixup.c

is doing the wrong thing here.... try disabling it.

How can I disable it? For now, I applied the attached patch which stops
calling mips_fixup_{exception,stubs}() from cavium/octeon_cpunode.c and
mips/mips_machdep.c, although functions in mips_fixup.c are referenced
by other files. By these chages, the situation seems to be getting
better (see below).

Also, it might be best to start with a 5.4 compiled kernel and copy/compile in certain
files with 4.8.5 -O2 until it starts working to help narrow down where the problem
is.

I tried this too. I prepared a kernel compiled with 5.4 -O0, which shows
a reproducible panic during the rc script. Then, some files are replaced
by those compiled with 4.8.5 -O2. Please find the attached files;
replaced.txt is list of replaced files which cause various panics or
random freezes when compiled with 5.4 -O0. maybeok.txt is list of files
which can be compiled with 5.4 -O0, although they can cause problems I
overlooked. When mips_fixup_{exception, stubs}() are not disabled by
applying the attached patch, kernel does not work even if files in
replaced.txt are replaced.

To my surprise, vers.o should be replaced. I wonder how can it cause
problems.

Thanks,
Rin
====
--- src/sys/arch/mips/cavium/octeon_cpunode.c.orig	2016-10-26 01:21:57.361585190 +0900
+++ src/sys/arch/mips/cavium/octeon_cpunode.c	2016-10-26 01:22:03.273903278 +0900
@@ -208,14 +208,18 @@
 static void
 octeon_cpu_init(struct cpu_info *ci)
 {
+#if 0
 	bool ok __diagused;
+#endif
// First thing is setup the execption vectors for this cpu.
 	mips64r2_vector_init(&mips_splsw);
+#if 0
 	// Next rewrite those exceptions to use this cpu's cpu_info.
 	ok = mips_fixup_exceptions(octeon_fixup_cpu_info_references, ci);
 	KASSERT(ok);
+#endif
(void) splhigh(); // make sure interrupts are masked --- src/sys/arch/mips/mips/mips_machdep.c.orig 2016-10-26 01:22:19.353513862 +0900
+++ src/sys/arch/mips/mips/mips_machdep.c	2016-10-26 01:22:22.579376985 +0900
@@ -1372,6 +1372,7 @@
 		cpu_reboot(RB_HALT, NULL);
 	}
+#if 0
 	/*
 	 * Now that the splsw and locoresw have been filled in, fixup the
 	 * jumps to any stubs to actually jump to the real routines.
@@ -1379,6 +1380,7 @@
 	extern uint32_t _ftext[];
 	extern uint32_t _etext[];
 	mips_fixup_stubs(_ftext, _etext);
+#endif
#if (MIPS3 + MIPS32 + MIPS32R2 + MIPS64 + MIPS64R2) > 0
 	/*
arc4.o
at_print.o
bpf_filter.o
bufq_disksort.o
if.o
if_arp.o
if_cnmac.o
if_llatbl.o
if_loop.o
in.o
in4_cksum.o
in6_print.o
in_cksum.o
in_offload.o
in_pcb.o
in_print.o
raw_cb.o
raw_ip.o
raw_usrreq.o
spl.o
spl_stubs.o
swapnetbsd.o
trap.o
vers.o
vnode_if.o
atphy.o
autoconf.o
bpf.o
bpf_stub.o
bufq_fcfs.o
bus_dma.o
cache.o
cache_mipsNN.o
cache_octeon.o
cache_r4k_pcache128.o
cache_r4k_pcache16.o
cache_r4k_pcache32.o
cache_r4k_pcache64.o
cache_r4k_scache128.o
cache_r4k_scache16.o
cache_r4k_scache32.o
cache_r4k_scache64.o
clock_subr.o
clockctl.o
cnmagic.o
com.o
compat_mod.o
cons.o
copy.o
core_elf32.o
core_elf64.o
core_machdep.o
cprng_fast.o
cpu_exec.o
cpu_in_cksum.o
cpu_subr.o
db_access.o
db_break.o
db_command.o
db_cpu.o
db_disasm.o
db_examine.o
db_expr.o
db_input.o
db_interface.o
db_kernel.o
db_lex.o
db_lwp.o
db_output.o
db_panic.o
db_print.o
db_proc.o
db_run.o
db_sym.o
db_trace.o
db_trap.o
db_variables.o
db_watch.o
db_write_cmd.o
db_xxx.o
dead_vfsops.o
dead_vnops.o
debugsyms.o
dev_verbose.o
devsw.o
dk.o
dl_print.o
dwc2.o
dwc2_core.o
dwc2_coreintr.o
dwc2_hcd.o
dwc2_hcdddma.o
dwc2_hcdintr.o
dwc2_hcdqueue.o
exec_elf32.o
exec_elf64.o
exec_script.o
exec_subr.o
ext2fs_alloc.o
ext2fs_balloc.o
ext2fs_bmap.o
ext2fs_bswap.o
ext2fs_extents.o
ext2fs_hash.o
ext2fs_htree.o
ext2fs_inode.o
ext2fs_lookup.o
ext2fs_readwrite.o
ext2fs_rename.o
ext2fs_subr.o
ext2fs_vfsops.o
ext2fs_vnops.o
ext2fs_xattr.o
ffs_alloc.o
ffs_balloc.o
ffs_inode.o
ffs_snapshot.o
ffs_subr.o
ffs_tables.o
ffs_vfsops.o
ffs_vnops.o
ffs_wapbl.o
fifo_vnops.o
genfs_io.o
genfs_rename.o
genfs_vfsops.o
genfs_vnops.o
if_ethersubr.o
if_media.o
igmp.o
in_proto.o
init_main.o
init_sysctl.o
init_sysctl_base.o
init_sysent.o
interrupt.o
ioconf.o
ip_encap.o
ip_icmp.o
ip_id.o
ip_input.o
ip_output.o
ip_reass.o
kern_acct.o
kern_auth.o
kern_cfglock.o
kern_clock.o
kern_condvar.o
kern_core.o
kern_cpu.o
kern_descrip.o
kern_drvctl.o
kern_event.o
kern_exec.o
kern_exit.o
kern_fork.o
kern_hook.o
kern_idle.o
kern_ksyms.o
kern_ksyms_buf.o
kern_ksyms_buf_real.o
kern_kthread.o
kern_ktrace.o
kern_ktrace_vfs.o
kern_lock.o
kern_lwp.o
kern_malloc.o
kern_module.o
kern_module_vfs.o
kern_mutex.o
kern_mutex_obj.o
kern_ntptime.o
kern_physio.o
kern_pmf.o
kern_proc.o
kern_prot.o
kern_ras.o
kern_rate.o
kern_resource.o
kern_rndpool.o
kern_rndq.o
kern_rndsink.o
kern_runq.o
kern_rwlock.o
kern_rwlock_obj.o
kern_sig.o
kern_sleepq.o
kern_softint.o
kern_ssp.o
kern_stub.o
kern_subr.o
kern_synch.o
kern_syscall.o
kern_sysctl.o
kern_tc.o
kern_time.o
kern_timeout.o
kern_todr.o
kern_turnstile.o
kern_uidinfo.o
kern_uuid.o
kern_xxx.o
kernfs_vfsops.o
kernfs_vnops.o
krpc_subr.o
link_proto.o
linux_work.o
lock_stubs_ras.o
locore.o
locore_machdep.o
locore_mips3.o
locore_octeon.o
mach_intr.o
machdep.o
mainbus.o
mainbus_octeon1p.o
mfs_miniroot.o
mii.o
mii_ethersubr.o
mii_physubr.o
mii_verbose.o
mips3_clock.o
mips3_clockintr.o
mips64r2_subr.o
mips_dsp.o
mips_emul.o
mips_fixup.o
mips_fpu.o
mips_machdep.o
mips_softint.o
mm.o
msdosfs_conv.o
msdosfs_denode.o
msdosfs_fat.o
msdosfs_lookup.o
msdosfs_unicode.o
msdosfs_vfsops.o
msdosfs_vnops.o
net_stats.o
netbsd32_core.o
netbsd32_event.o
netbsd32_exec_elf32.o
netbsd32_execve.o
netbsd32_fs.o
netbsd32_ioctl.o
netbsd32_ipc.o
netbsd32_lwp.o
netbsd32_machdep.o
netbsd32_mod.o
netbsd32_module.o
netbsd32_mqueue.o
netbsd32_netbsd.o
netbsd32_ptrace.o
netbsd32_select.o
netbsd32_sem.o
netbsd32_signal.o
netbsd32_socket.o
netbsd32_sysctl.o
netbsd32_sysent.o
netbsd32_time.o
netbsd32_wait.o
nfs_bio.o
nfs_boot.o
nfs_bootdhcp.o
nfs_clntsocket.o
nfs_clntsubs.o
nfs_iod.o
nfs_kq.o
nfs_node.o
nfs_socket.o
nfs_subs.o
nfs_vfsops.o
nfs_vnops.o
nist_ctr_drbg.o
octeon1p_iobus.o
octeon_asx.o
octeon_bootbus.o
octeon_bootbus_machdep.o
octeon_ciu.o
octeon_cpunode.o
octeon_dma.o
octeon_dwctwo.o
octeon_fau.o
octeon_fpa.o
octeon_gmx.o
octeon_intr.o
octeon_iobus.o
octeon_ipd.o
octeon_pip.o
octeon_pko.o
octeon_pow.o
octeon_rnm.o
octeon_smi.o
octeon_uart.o
param.o
pfil.o
pktqueue.o
pmap.o
pmap_machdep.o
pmap_segtab.o
pmap_synci.o
pmap_tlb.o
portalgo.o
process_machdep.o
procfs_cmdline.o
procfs_ctl.o
procfs_fd.o
procfs_fpregs.o
procfs_linux.o
procfs_machdep.o
procfs_map.o
procfs_mem.o
procfs_note.o
procfs_regs.o
procfs_status.o
procfs_subr.o
procfs_vfsops.o
procfs_vnops.o
ptyfs_subr.o
ptyfs_vfsops.o
ptyfs_vnops.o
quota1_subr.o
radix.o
rijndael-alg-fst.o
rijndael-api-fst.o
rijndael.o
rndpseudo.o
route.o
rtbl.o
rtsock.o
sched_4bsd.o
scsi_base.o
scsiconf.o
scsipi_base.o
scsipi_ioctl.o
scsipiconf.o
sd.o
secmodel.o
secmodel_bsd44.o
secmodel_extensions.o
secmodel_securelevel.o
secmodel_suser.o
sig_machdep.o
sigcode.o
spec_vnops.o
subr_autoconf.o
subr_blist.o
subr_bufq.o
subr_callback.o
subr_copy.o
subr_cprng.o
subr_cpufreq.o
subr_debug.o
subr_device.o
subr_devsw.o
subr_disk.o
subr_disk_mbr.o
subr_disk_open.o
subr_evcnt.o
subr_exec_fd.o
subr_extent.o
subr_hash.o
subr_humanize.o
subr_interrupt.o
subr_iostat.o
subr_ipi.o
subr_kcpuset.o
subr_kmem.o
subr_kobj.o
subr_kobj_vfs.o
subr_lockdebug.o
subr_log.o
subr_lwp_specificdata.o
subr_once.o
subr_optstr.o
subr_pcq.o
subr_pcu.o
subr_percpu.o
subr_pool.o
subr_prf.o
subr_prof.o
subr_pserialize.o
subr_psref.o
subr_specificdata.o
subr_time.o
subr_vmem.o
subr_workqueue.o
subr_xcall.o
sys_aio.o
sys_descrip.o
sys_generic.o
sys_lwp.o
sys_machdep.o
sys_module.o
sys_mqueue.o
sys_pipe.o
sys_pmc.o
sys_process.o
sys_pset.o
sys_sched.o
sys_select.o
sys_sig.o
sys_socket.o
syscall.o
sysmon.o
sysmon_wdog.o
sysv_ipc.o
sysv_msg.o
sysv_sem.o
sysv_shm.o
tcp_congctl.o
tcp_input.o
tcp_output.o
tcp_sack.o
tcp_subr.o
tcp_timer.o
tcp_usrreq.o
tcp_vtw.o
tmpfs_fifoops.o
tmpfs_mem.o
tmpfs_rename.o
tmpfs_specops.o
tmpfs_subr.o
tmpfs_vfsops.o
tmpfs_vnops.o
tty.o
tty_conf.o
tty_ptm.o
tty_pty.o
tty_subr.o
tty_tty.o
udp_usrreq.o
ufs_bmap.o
ufs_inode.o
ufs_lookup.o
ufs_rename.o
ufs_vfsops.o
ufs_vnops.o
ufs_wapbl.o
uhub.o
uipc_accf.o
uipc_domain.o
uipc_mbuf.o
uipc_mbuf2.o
uipc_proto.o
uipc_sem.o
uipc_socket.o
uipc_socket2.o
uipc_syscalls.o
uipc_usrreq.o
ukphy.o
ukphy_subr.o
umass.o
umass_quirks.o
umass_scsipi.o
usb.o
usb_mem.o
usb_quirks.o
usb_subr.o
usbdi.o
usbdi_util.o
usbroothub.o
uvm_amap.o
uvm_anon.o
uvm_aobj.o
uvm_bio.o
uvm_coredump.o
uvm_device.o
uvm_emap.o
uvm_fault.o
uvm_glue.o
uvm_init.o
uvm_io.o
uvm_km.o
uvm_loan.o
uvm_map.o
uvm_meter.o
uvm_mmap.o
uvm_mremap.o
uvm_object.o
uvm_page.o
uvm_pager.o
uvm_pdaemon.o
uvm_pdpolicy_clock.o
uvm_pglist.o
uvm_readahead.o
uvm_stat.o
uvm_swap.o
uvm_unix.o
uvm_user.o
uvm_vnode.o
vfs_bio.o
vfs_cache.o
vfs_cwd.o
vfs_dirhash.o
vfs_getcwd.o
vfs_hooks.o
vfs_init.o
vfs_lockf.o
vfs_lookup.o
vfs_mount.o
vfs_quotactl.o
vfs_subr.o
vfs_syscalls.o
vfs_trans.o
vfs_vnode.o
vfs_vnops.o
vfs_wapbl.o
vfs_xattr.o
vm_machdep.o


Home | Main Index | Thread Index | Old Index