Date: Mon, 28 Aug 2000 18:14:44 +0900 (JST) From: hiramoto@phys.chs.nihon-u.ac.jp To: FreeBSD-gnats-submit@freebsd.org Subject: kern/20895: sym driver doesn't work for SYM53C895A Message-ID: <200008280914.e7S9Ei401248@grape.phys.chs.nihon-u.ac.jp>
next in thread | raw e-mail | index | archive | help
>Number: 20895
>Category: kern
>Synopsis: sym driver doesn't work for SYM53C895A
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Aug 28 02:20:03 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Hisashi Hiramoto
>Release: FreeBSD 4.1-STABLE i386
>Organization:
>Environment:
4.1-stable and 5.0-current (x86)
Compaq Prliant ML 330 (on-board chips sym53c895a ultra2 scsi,
no ide disk)
>Description:
sym0: <895a> port 0x1000-0x10ff mem 0xb1100000-0xb1101fff,0xb1400000-0xb14003ff irq 15 at device 4.0 on pci1
sym0: failed to allocate RAM resouces
Fatal trap 12: page fault while in kernel mode
.....
The legacy(?) ncr driver works, so the generic kernel of 4.1 is OK,
but it works as ultra, not as ultra-2.
>How-To-Repeat:
In my system (Compaq Prliant ML 330), 5.0 generic kernel and
4.1-stable kernel with sym (without ncr) reliably reproduce
this problem. I have no idea whether this is generic for any
sytems having Symbios 53c895a or not, because I have no other
system with 53c895a.
>Fix:
The following patch works at least for me, although I don't know
this is the right fix. (Non-FreeBSD_Bus_Io_Abstraction part is
untested)
*** sym_hipd.c.orig Mon Jul 3 15:21:53 2000
--- sym_hipd.c Mon Aug 28 02:39:07 2000
***************
*** 9057,9066 ****
(command & PCIM_CMD_MEMEN) != 0) {
#ifdef FreeBSD_Bus_Io_Abstraction
int regs_id = SYM_PCI_RAM;
! if (np->features & FE_64BIT)
regs_id = SYM_PCI_RAM64;
! np->ram_res = bus_alloc_resource(dev, SYS_RES_MEMORY, ®s_id,
! 0, ~0, 1, RF_ACTIVE);
if (!np->ram_res) {
device_printf(dev,"failed to allocate RAM resources\n");
goto attach_failed;
--- 9057,9072 ----
(command & PCIM_CMD_MEMEN) != 0) {
#ifdef FreeBSD_Bus_Io_Abstraction
int regs_id = SYM_PCI_RAM;
! if (np->features & FE_64BIT) {
regs_id = SYM_PCI_RAM64;
! np->ram_res = bus_alloc_resource(dev, SYS_RES_MEMORY,
! ®s_id, 0, ~0, 1, RF_ACTIVE);
! if (!np->ram_res)
! regs_id = SYM_PCI_RAM;
! }
! if (regs_id == SYM_PCI_RAM)
! np->ram_res = bus_alloc_resource(dev, SYS_RES_MEMORY,
! ®s_id, 0, ~0, 1, RF_ACTIVE);
if (!np->ram_res) {
device_printf(dev,"failed to allocate RAM resources\n");
goto attach_failed;
***************
*** 9074,9082 ****
#else
vm_offset_t vaddr, paddr;
int regs_id = SYM_PCI_RAM;
! if (np->features & FE_64BIT)
regs_id = SYM_PCI_RAM64;
! if (!pci_map_mem(pci_tag, regs_id, &vaddr, &paddr)) {
printf("%s: failed to map RAM window\n", sym_name(np));
goto attach_failed;
}
--- 9080,9092 ----
#else
vm_offset_t vaddr, paddr;
int regs_id = SYM_PCI_RAM;
! if (np->features & FE_64BIT) {
regs_id = SYM_PCI_RAM64;
! if (!pci_map_mem(pci_tag, regs_id, &vaddr, &paddr))
! regs_id = SYM_PCI_RAM;
! }
! if (regs_id == SYM_PCI_RAM &&
! !pci_map_mem(pci_tag, regs_id, &vaddr, &paddr)) {
printf("%s: failed to map RAM window\n", sym_name(np));
goto attach_failed;
}
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200008280914.e7S9Ei401248>
