Panic at USB drive plugging in

2013-07-23 Thread Jia-Shiun Li
Hi all,

as personal preference I compiled kernel with drivers as module as
possible. Recently I found that plugging in USB drives causes kernel
to panic. But it does not happen when booting with GENERIC kernel
which has USB drivers compiled in.

panic screenshot:
http://goo.gl/pIIDaF

back trace:
http://goo.gl/ww4yy6

the kernel is compiled:
FreeBSD 4cbsd 10.0-CURRENT FreeBSD 10.0-CURRENT #1 r253395: Fri Jul 19
15:20:08 CST 2013 jsli@4cbsd:/usr/obj/usr/src/sys/Minimal  amd64

the back trace looks like devd and something had timing issues. Any ideas?


Regards,
Jia-Shiun.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Panic at USB drive plugging in

2013-07-23 Thread Hans Petter Selasky

On 07/23/13 17:12, Jia-Shiun Li wrote:

Hi all,

as personal preference I compiled kernel with drivers as module as
possible. Recently I found that plugging in USB drives causes kernel
to panic. But it does not happen when booting with GENERIC kernel
which has USB drivers compiled in.

panic screenshot:
http://goo.gl/pIIDaF

back trace:
http://goo.gl/ww4yy6

the kernel is compiled:
FreeBSD 4cbsd 10.0-CURRENT FreeBSD 10.0-CURRENT #1 r253395: Fri Jul 19
15:20:08 CST 2013 jsli@4cbsd:/usr/obj/usr/src/sys/Minimal  amd64

the back trace looks like devd and something had timing issues. Any ideas?



Hi,

This looks like a CAM/SCSI problem and not directly USB stack problem.

--HPS

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Panic at USB drive plugging in

2013-07-23 Thread Alexander Motin

On 23.07.2013 19:07, Hans Petter Selasky wrote:

On 07/23/13 17:12, Jia-Shiun Li wrote:

Hi all,

as personal preference I compiled kernel with drivers as module as
possible. Recently I found that plugging in USB drives causes kernel
to panic. But it does not happen when booting with GENERIC kernel
which has USB drivers compiled in.

panic screenshot:
http://goo.gl/pIIDaF

back trace:
http://goo.gl/ww4yy6

the kernel is compiled:
FreeBSD 4cbsd 10.0-CURRENT FreeBSD 10.0-CURRENT #1 r253395: Fri Jul 19
15:20:08 CST 2013 jsli@4cbsd:/usr/obj/usr/src/sys/Minimal  amd64

the back trace looks like devd and something had timing issues. Any
ideas?


This looks like a CAM/SCSI problem and not directly USB stack problem.


It seems crashed inside the CAM sg driver, that is not part of GENERIC 
kernel. Are you using it is some way?


--
Alexander Motin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Panic at USB drive plugging in

2013-07-23 Thread Jia-Shiun Li
On Wed, Jul 24, 2013 at 12:13 AM, Alexander Motin  wrote:
> On 23.07.2013 19:07, Hans Petter Selasky wrote:
>> This looks like a CAM/SCSI problem and not directly USB stack problem.
>
> It seems crashed inside the CAM sg driver, that is not part of GENERIC
> kernel. Are you using it is some way?
>

No. I do not use it at all.

kernel conf & loader.conf:

---8<--
#
# GENERIC -- Generic kernel configuration file for FreeBSD/amd64
#
# For more information on this file, please read the config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
#
#
http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: head/sys/amd64/conf/GENERIC 252867 2013-07-06 07:49:41Z delphij $

cpu HAMMER
ident Minimal
options MSGBUF_SIZE=327680

makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support

options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options TCP_OFFLOAD # TCP offload
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options QUOTA # Enable disk quotas for UFS
options MD_ROOT # MD is a potential root device
options NFSCL # New Network Filesystem Client
options NFSD # New Network Filesystem Server
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCL
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_RAID # Soft RAID functionality.
options GEOM_LABEL # Provides labelization
options COMPAT_FREEBSD32 # Compatible with i386 binaries
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options COMPAT_FREEBSD7 # Compatible with FreeBSD7
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options STACK # stack(9) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
options AUDIT # Security event auditing
options CAPABILITY_MODE # Capsicum capability mode
options CAPABILITIES # Capsicum capabilities
options MAC # TrustedBSD MAC Framework
options KDTRACE_FRAME # Ensure frames are compiled in
options KDTRACE_HOOKS # Kernel DTrace hooks
options DDB_CTF # Kernel ELF linker loads CTF data
options INCLUDE_CONFIG_FILE # Include this file in kernel

# Debugging support.  Always need this:
options KDB # Enable kernel debugger support.
# For minimum debugger support (stable branch) use:
#options KDB_TRACE # Print a stack trace for a panic.
# For full debugger support use this instead:
options DDB # Support DDB.
options GDB # Support remote GDB.
options DEADLKRES # Enable the deadlock resolver
options INVARIANTS # Enable calls of extra sanity checking
options INVARIANT_SUPPORT # Extra sanity checks of internal
structures, required by INVARIANTS
options WITNESS # Enable checks to detect deadlocks and cycles
options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones

# Make an SMP-capable kernel by default
options SMP # Symmetric MultiProcessor Kernel

# CPU frequency control
device cpufreq

# Bus support.
device acpi
device pci

# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse

device kbdmux # keyboard multiplexer

device vga # VGA video card driver
options VESA # Add support for VESA BIOS Extensions (VBE)

device splash # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device sc
options SC_PIXEL_MODE # add support for th

Re: Panic at USB drive plugging in

2013-07-23 Thread Alexander Motin

On 23.07.2013 21:28, Jia-Shiun Li wrote:

On Wed, Jul 24, 2013 at 12:13 AM, Alexander Motin  wrote:

On 23.07.2013 19:07, Hans Petter Selasky wrote:

This looks like a CAM/SCSI problem and not directly USB stack problem.


It seems crashed inside the CAM sg driver, that is not part of GENERIC
kernel. Are you using it is some way?



No. I do not use it at all.


cam.k kernel module includes all existing periph drivers in one bundle. 
Loading cam.ko you are probably getting sg driver also, that triggers 
reported issue. You may try to rip out sg with single line hack to 
module's Makefile. The real fix require looking closer on sg, which I 
never used.


--
Alexander Motin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Panic at USB drive plugging in

2013-07-24 Thread Jia-Shiun Li
On Wed, Jul 24, 2013 at 4:02 AM, Alexander Motin  wrote:
> cam.k kernel module includes all existing periph drivers in one bundle.
> Loading cam.ko you are probably getting sg driver also, that triggers
> reported issue. You may try to rip out sg with single line hack to module's
> Makefile. The real fix require looking closer on sg, which I never used.
>

Indeed. Test result did confirm that if sg is not included in cam.ko
USB drives will not cause kernel to panic.

Jia-Shiun.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Panic at USB drive plugging in

2013-08-06 Thread Jia-Shiun Li
2013/7/24 下午10:26 於 "Jia-Shiun Li"  寫道:

> On Wed, Jul 24, 2013 at 4:02 AM, Alexander Motin  wrote:
> > cam.k kernel module includes all existing periph drivers in one bundle.
> > Loading cam.ko you are probably getting sg driver also, that triggers
> > reported issue. You may try to rip out sg with single line hack to
> module's
> > Makefile. The real fix require looking closer on sg, which I never used.
> >
>
> Indeed. Test result did confirm that if sg is not included in cam.ko
> USB drives will not cause kernel to panic.
>
>
Hi all,

turns out, it may be conflicts between assumed and actual sg usage.

The sg driver specifically assumes a write-read sequence. If a read comes
first it will cause sg to panic at msleep() in sgread. In my case the
process is hald-probe-storage tasting new devices. But it can be as simple
as "dd if=/dev/sgX".
I am wondering that, is sg necessary on FreeBSD? Since most applications
seem to live happily without it in GENERIC kernel. Maybe we can isolate it
from cam.ko to make cam usable as module, and make the standalone sg module
depending on cam module before sg got more resistant to misuse?

Regards,
Jia-Shiun.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"