Date: Thu, 25 Oct 2001 10:53:51 +0200 From: Arjan Knepper <arjan@jak.nl> To: klemscot@klements.com, bde@zeta.org.au, freebsd-bugs@FreeBSD.org Subject: Re: i386/30965: Cyclades Cyclom-Yep causes FreeBSD to hang during Message-ID: <3BD7D31F.6050006@jak.nl>
next in thread | raw e-mail | index | archive | help
> > >The following reply was made to PR i386/30965; it has been noted by GNATS. > >From: Scott Klement <klemscot@klements.com> >To: Bruce Evans <bde@zeta.org.au> >Cc: <FreeBSD-gnats-submit@FreeBSD.ORG> >Subject: Re: i386/30965: Cyclades Cyclom-Yep causes FreeBSD to hang during > boot >Date: Mon, 22 Oct 2001 01:16:27 -0500 (CDT) > > On Sun, 21 Oct 2001, Bruce Evans wrote: > > > On Fri, 19 Oct 2001, Scott Klement wrote: > > > > > The BIOS does not show any IRQ conflicts. The dmesg also does not show any > > > IRQ conflicts. (But perhaps something is responding on IRQs that it > > > shouldnt? I wish I knew more about how this works...) > > > > Do you mean it desn't show any shared IRQs? PCI IRQs can't really conflict. > > Shareing them is supposed to work. > > > > Errr.. sorry, you're right. I meant that no two devices are assigned the > same IRQ number -- i.e. nothing is shared. > > I have to disable devices to get it to that point, where nothing is > shared, but doing so does not prevent FreeBSD from hanging during boot. > I have the same kind of trouble, are you using 1 cy board? >> > I can certainly send you a dmesg if that will help. I could also send > > > the e-mail conversation that I had with the Tech Support person at > > > Cyclades about this.. would that help? > > > > Start with the complete dmesg for booting with -v, and "pciconf -lv" > > output. > > I can do the dmesg by using a serial console, and recording the output > with script(1) or similar... But I can't really do a pciconf, since > the FreeBSD hangs before I can get to a shell prompt. > > Unless, of course, running pciconf without the Cyclades equipment attached > would help? > > Also, the pciconf in 4.4R doesn't appear to have a -v option. Perhaps > I should upgrade to -current before trying these things. I'll begin > the upgrade process as soon as I can Monday morning... It's a fast > machine, so making world shouldn't be too bad. > Already tried the -CURRENT, dind't help me. > > > Did the Tech Support seem helpful? > > They were courteous, and treated me with respect -- making them the best > tech support I've ever worked with :) But, they didn't suggest anything > that I hadn't already thought of or tried. > <g> I did send them a complete report about how and what, and they simply replyed : "sorry we don't have anyone around with FreeBSD knowledge and we don't have FreeBSD test systems. Did you run MAKEDEV for the cyclades devices?" Bellow an email to -HACKERS with some test results: > Hello, > > There are problems with the Cyclades Cyclom YeP driver. (see PR > i386/30965). I've put printf's in the driver code on several places to > check where the point is of hard locking and its seems to be on line > 136 in the /usr/src/sys/pci/cy_pci.c in my situation. > > --------<snipped>--------------------------------------------------------------------- > > case PLX_9050: > outw(ioport + CY_PLX_9050_ICS, > inw(ioport + CY_PLX_9050_ICS) | > CY_PLX_9050_ICS_IENABLE | > CY_PLX_9050_ICS_LOCAL_IENABLE); > --------<snipped>--------------------------------------------------------------------- > > This particular piece of code is hard-locking a DUAL PENTIUM III 933 > DELL PowerEdge 2550 with 2 YeP (PCI) boards with a SINGLE CPU kernel. > (Doesn't even react on numlock key anymore) > > I really need some enligtment on this. > > Attached my kernel conf file and below the piece of code containg the > lines. > > static void > cy_attach(config_id, unit) > pcici_t config_id; > int unit; > { > vm_offset_t paddr; > void *vaddr; > u_int32_t ioport; > int adapter; > u_char plx_ver; > > ioport = (u_int32_t) pci_conf_read(config_id, > CY_PCI_BASE_ADDR1) & ~0x3; > paddr = pci_conf_read(config_id, CY_PCI_BASE_ADDR2) & ~0xf; > #if 0 > if (!pci_map_mem(config_id, CY_PCI_BASE_ADDR2, &vaddr, &paddr)) { > printf("cy%d: couldn't map shared memory\n", unit); > return; > }; > #endif > vaddr = pmap_mapdev(paddr, 0x4000); > > adapter = cyattach_common(vaddr, 1); > if (adapter < 0) { > /* > * No ports found. Release resources and punt. > */ > printf("cy%d: no ports found!\n", unit); > goto fail; > } > > /* > * Allocate our interrupt. > * XXX Using the ISA interrupt handler directly is a bit of a > violation > * since it doesn't actually take the same argument. For > PCI, the > * argument is a void * token, but for ISA it is a unit. > Since > * there is no overlap in PCI/ISA unit numbers for this > driver, and > * since the ISA driver must handle the interrupt anyway, > we use > * the unit number as the token even for PCI. > */ > if ( > #ifdef CY_PCI_FASTINTR > !pci_map_int_right(config_id, (pci_inthand_t *)cyintr, > (void *)adapter, &tty_imask, > INTR_EXCL | INTR_FAST) && > #endif > !pci_map_int_right(config_id, (pci_inthand_t *)cyintr, > (void *)adapter, &tty_imask, 0)) { > printf("cy%d: couldn't map interrupt\n", unit); > goto fail; > } > > /* > * Enable the "local" interrupt input to generate a > * PCI interrupt. > */ > plx_ver = *((u_char *)vaddr + PLX_VER) & 0x0f; > switch (plx_ver) { > case PLX_9050: > outw(ioport + CY_PLX_9050_ICS, > inw(ioport + CY_PLX_9050_ICS) | > CY_PLX_9050_ICS_IENABLE | > CY_PLX_9050_ICS_LOCAL_IENABLE); > break; > case PLX_9060: > case PLX_9080: > default: /* Old board, use PLX_9060 values. */ > outw(ioport + CY_PLX_9060_ICS, > inw(ioport + CY_PLX_9060_ICS) | > CY_PLX_9060_ICS_IENABLE | > CY_PLX_9060_ICS_LOCAL_IENABLE); > break; > } > > return; > > fail: > /* XXX should release any allocated virtual memory */ > return; > } > BTW Linux redhat 7.1 runs just fine on this system with 3 Cyclades PCI boards. 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?3BD7D31F.6050006>