From owner-freebsd-bugs@FreeBSD.ORG Thu Mar 22 07:40:07 2007 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 9A45616A53C for ; Thu, 22 Mar 2007 07:40:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [69.147.83.40]) by mx1.freebsd.org (Postfix) with ESMTP id 784D713C4C7 for ; Thu, 22 Mar 2007 07:40:07 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id l2M7e7Km062658 for ; Thu, 22 Mar 2007 07:40:07 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id l2M7e7eG062655; Thu, 22 Mar 2007 07:40:07 GMT (envelope-from gnats) Resent-Date: Thu, 22 Mar 2007 07:40:07 GMT Resent-Message-Id: <200703220740.l2M7e7eG062655@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Rajkumar S Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 83E9116A4FE for ; Thu, 22 Mar 2007 07:38:03 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [69.147.83.33]) by mx1.freebsd.org (Postfix) with ESMTP id 6358013C45E for ; Thu, 22 Mar 2007 07:38:03 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id l2M7c3Mj017654 for ; Thu, 22 Mar 2007 07:38:03 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id l2M7X2Q6015378; Thu, 22 Mar 2007 07:33:02 GMT (envelope-from nobody) Message-Id: <200703220733.l2M7X2Q6015378@www.freebsd.org> Date: Thu, 22 Mar 2007 07:33:02 GMT From: Rajkumar S To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.0 Cc: Subject: kern/110663: safenet driver causes kernel panic X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Mar 2007 07:40:07 -0000 >Number: 110663 >Category: kern >Synopsis: safenet driver causes kernel panic >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Mar 22 07:40:06 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Rajkumar S >Release: FreeBSD 6.2-RELEASE-p3 >Organization: Linuxense >Environment: >Description: Hi, I am trying to install SafeNet 1141 support in one of the freebsd boxes here. according to safe(4), I have to add "device safe" into my kernel config and compile to enable hardware crypto acceleration. But after I boot with safe module enabled I get a kernel panic. The last couple of lines in my boot message are safe0 mem 0xf6120000-0xf6121fff irq 5 at device 10.0 on pci0 safe0: cannot allocate DMA tag device_attach: safe0 attach returned 6 re0: port 0xb000-0xb0ff mem 0xf6120 re0: could not allocate dma tag Fatal trap 12: page fault while in kernel mode fault virtual address = 0x60 fault code = supervisor read, page not present instruction pointer = 0x20:0xc0570ea5 stack pointer = 0x28:0xc0c20bd0 frame pointer = 0x28:0xc0c20be4 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 0 (swapper) trap number = 12 panic: page fault Uptime: 1s I have appended my kernel config at the end of this PR. To test this further, I commented the "device safe" line from the kernel config and this time the system booted up correctly. The diff of the messages up to the point of panic is --- embedded.txt 2007-03-16 15:59:52.528876360 +0530 +++ freebsd.dump 2007-03-16 15:58:18.852117392 +0530 @@ -3,7 +3,7 @@ The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. -FreeBSD 6.2-RELEASE-p3 #0: Fri Mar 16 08:57:36 UTC 2007 +FreeBSD 6.2-RELEASE-p3 #0: Thu Mar 15 11:46:30 UTC 2007 root@beastie.linuxense.com:/usr/obj.pfSense/usr/src/sys/pfSense_wrap.6 Timecounter "i8254" frequency 1193182 Hz quality 0 @@ -69,6 +69,24 @@ rlphy7: on miibus7 rlphy7: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto rl7: Ethernet address: 00:60:e0:04:29:e4 -pci0: at device 10.0 (no driver attached) +safe0 mem 0xf6120000-0xf6121fff irq 5 at device 10.0 on pci0 +safe0: cannot allocate DMA tag +device_attach: safe0 attach returned 6 re0: port 0xb000-0xb0ff mem 0xf6120 +re0: could not allocate dma tag + + +Fatal trap 12: page fault while in kernel mode +fault virtual address = 0x60 +fault code = supervisor read, page not present +instruction pointer = 0x20:0xc0570ea5 +stack pointer = 0x28:0xc0c20bd0 +frame pointer = 0x28:0xc0c20be4 +code segment = base 0x0, limit 0xfffff, type 0x1b + = DPL 0, pres 1, def32 1, gran 1 +processor eflags = interrupt enabled, resume, IOPL = 0 +current process = 0 (swapper) +trap number = 12 +panic: page fault +Uptime: 1s It's only 2 lines about could not allocate dma tag, I have searched for this error message, but nothing came up. raj -- machine i386 cpu I486_CPU cpu I586_CPU cpu I686_CPU ident embedded # To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices. options COMPAT_FREEBSD5 options CPU_GEODE options CPU_SOEKRIS options CPU_ELAN #options CPU_ELAN_PPS #options CPU_ELAN_XTAL=32768000 #options SCHED_ULE # ULE scheduler options SCHED_4BSD # 4BSD scheduler options INET # InterNETworking options INET6 # IPv6 communications protocols 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 MD_ROOT # MD is a potential root device options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_GPT # GUID Partition Tables. options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!] options COMPAT_FREEBSD4 # Compatible with FreeBSD4 options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI options KTRACE # ktrace(1) 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 KBD_INSTALL_CDEV # install a CDEV entry in /dev #options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. #options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. # Bus support. Do not remove isa, even if you have no isa slots device isa device eisa device pci # ATA and ATAPI devices device ata device atadisk # ATA disk drives device ataraid # ATA RAID drives device atapicd # ATAPI CDROM drives device atapifd # ATAPI floppy drives device atapist # ATAPI tape drives options ATA_STATIC_ID # Static device numbering # SCSI Controllers #device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices device ahd # AHA39320/29320 and onboard AIC79xx devices #device amd # AMD 53C974 (Tekram DC-390(T)) #device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module #device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic #device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') #device trm # Tekram DC395U/UW/F DC315U adapters #device adv # Advansys SCSI adapters #device adw # Advansys wide SCSI adapters #device aha # Adaptec 154x SCSI adapters #device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. #device bt # Buslogic/Mylex MultiMaster SCSI adapters #device ncv # NCR 53C500 #device nsp # Workbit Ninja SCSI-3 #device stg # TMC 18C30/18C50 # SCSI peripherals device scbus # SCSI bus (required for SCSI) #device ch # SCSI media changers device da # Direct Access (disks) #device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE) # RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID #device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID #device ciss # Compaq Smart RAID 5* #device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device iir # Intel Integrated RAID #device ips # IBM (Adaptec) ServeRAID #device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID #device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID # IO devices for console device atkbdc # AT keyboard controller device atkbd # AT keyboard device psm # PS/2 mouse device kbdmux # keyboard multiplexer device vga # VGA video card driver device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc # Floating point support - do not disable. device npx # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus # Serial (COM) ports device sio # 8250, 16[45]50 based serial ports # Parallel port device ppc device ppbus # Parallel port bus (required) device ppi # Parallel port interface device # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') # PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit Ethernet device nge # NatSemi DP83820 gigabit Ethernet device nve # nVidia nForce MCP on-board Ethernet Networking device pcn # AMD Am79C97x PCI 10/100(precedence over 'lnc') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (``Starfire'') device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 ``EPIC'') device vge # VIA VT612x gigabit Ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') # Wireless NIC cards device wlan # 802.11 support device wlan_wep device wlan_ccmp device wlan_tkip device wlan_xauth device wlan_acl device ath device ath_rate_sample device ath_hal device an # Aironet 4500/4800 802.11 wireless NICs. device awi # BayStack 660 and others device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. device wl # Older non 802.11 Wavelan wireless NIC. #device iwi # Intel PRO/Wireless 2200BG # Pseudo devices. device loop # Network loopback device mem # Memory and kernel memory devices device io # I/O device device random # Entropy device device ether # Ethernet support device sl # Kernel SLIP device ppp # Kernel PPP device tun # Packet tunnel. device pty # Pseudo-ttys (telnet etc) device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device faith # IPv6-to-IPv4 relaying (translation) # The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter # USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device ucom # Uncommented at the request of colin device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse # USB Ethernet, requires miibus device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet # FireWire support #device firewire # FireWire bus code #device sbp # SCSI over FireWire (Requires scbus and da) #device fwe # Ethernet over FireWire (non-standard!) # pfsense addons device wlan # 802.11 support device wlan_wep device wlan_ccmp device wlan_tkip device wlan_xauth device wlan_acl device ath device ath_rate_sample device ath_hal device an # Aironet 4500/4800 802.11 wireless NICs. device awi # BayStack 660 and others device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. device wl # Older non 802.11 Wavelan wireless NIC. device tap device gre options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_FORWARD options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT device vlan options IPSTEALTH options TCP_DROP_SYNFIN #drop TCP packets with SYN+FIN options GEOM_UZIP options GEOM_LABEL options NETGRAPH #netgraph(4) system options NETGRAPH_BPF options NETGRAPH_ETHER options NETGRAPH_IFACE options NETGRAPH_PPP options NETGRAPH_PPPOE options NETGRAPH_PPTPGRE options NETGRAPH_RFC1490 options NETGRAPH_SOCKET options NETGRAPH_TTY options NETGRAPH_MPPC_ENCRYPTION #options NETGRAPH_UI #options NETGRAPH_VJC #options NETGRAPH_KSOCKET #options NETGRAPH_LMI #options NETGRAPH_ONE2MANY #options NETGRAPH_BRIDGE #options NETGRAPH_CISCO #options NETGRAPH_ECHO #options NETGRAPH_ASYNC #options NETGRAPH_FRAME_RELAY #options NETGRAPH_HOLE #options NETGRAPH_TEE device ubsa device ucom options FAST_IPSEC #device enc options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_PRIQ device pf device pflog device carp device pfsync device crypto # core crypto support device cryptodev # /dev/crypto for access to h/w device rndtest # FIPS 140-2 entropy tester device hifn # Hifn 7951, 7781, etc. options HIFN_DEBUG # enable debugging support: hw.hifn.debug options HIFN_RNDTEST # enable rndtest support device ubsec # Broadcom 5501, 5601, 58xx #device safe # SafeNet Support device if_bridge device speaker device hme options DEVICE_POLLING options ZERO_COPY_SOCKETS options HZ=100 device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet options TCP_SIGNATURE options PREEMPTION #options NO_ADAPTIVE_MUTEXES options ADAPTIVE_GIANT # Giant mutex is adaptive. # Lighttpd options ACCEPT_FILTER_HTTP # IPSEC filtering interface device enc >How-To-Repeat: The kernel panics every time the machine is booted. >Fix: I did some digging down of this problem. The problem causes at line 300 of safe.c [http://fxr.watson.org/fxr/source/dev/safe/safe.c?v=RELENG62#L300] The bus_dma_tag_create function fails with the error ENOMEM. According to man page, the flag BUS_DMA_ALLOCNOW can cause this problem and is only a minor optimisation. So to check I change the flag to BUS_DMA_COHERENT. The diff is --- safe.c.orig Thu Mar 22 12:30:27 2007 +++ safe.c Thu Mar 22 12:37:19 2007 @@ -291,7 +291,7 @@ SAFE_MAX_DMA, /* maxsize */ SAFE_MAX_PART, /* nsegments */ SAFE_MAX_SSIZE, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ + BUS_DMA_COHERENT, /* flags */ NULL, NULL, /* locking */ &sc->sc_srcdmat)) { device_printf(dev, "cannot allocate DMA tag\n"); @@ -306,7 +306,7 @@ SAFE_MAX_DMA, /* maxsize */ SAFE_MAX_PART, /* nsegments */ SAFE_MAX_DSIZE, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ + BUS_DMA_COHERENT, /* flags */ NULL, NULL, /* locking */ &sc->sc_dstdmat)) { device_printf(dev, "cannot allocate DMA tag\n"); Now the driver loads fine and /dev/crypto is available. I am also able to run cryptotest, but not completly. (sorry I do not have the error right now, I will append that later) I chose BUS_DMA_COHERENT randomly as in trying out another flag with zero understand of what this means. >Release-Note: >Audit-Trail: >Unformatted: