From owner-freebsd-current Fri Sep 15 12:56:30 1995 Return-Path: owner-current Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA01334 for current-outgoing; Fri, 15 Sep 1995 12:56:30 -0700 Received: from ns1.win.net (ns1.win.net [204.215.209.3]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id MAA01329 for ; Fri, 15 Sep 1995 12:56:20 -0700 Received: (from root@localhost) by ns1.win.net (8.6.11/8.6.9) id QAA13126 for current@freebsd.org; Fri, 15 Sep 1995 16:02:03 -0400 From: Mark Hittinger Message-Id: <199509152002.QAA13126@ns1.win.net> Subject: re: more EISA pci probe hang info To: current@freebsd.org Date: Fri, 15 Sep 1995 16:02:02 -0400 (EDT) X-Mailer: ELM [version 2.4 PL23] Content-Type: text Content-Length: 1539 Sender: owner-current@freebsd.org Precedence: bulk More info on pci probe hang on pure EISA box: It doesn't do it every time. Starting out with a powered off/then on sequence seems to increase the probability of a hang. If you reboot without powering off the hang doesn't occur as often. This is with several iterations. I have an ep0 at 0x2000 and an ahc1 at 0x4000. I've seen the ep0 device act weird with FreeBSD probes before. I put in printfs and got "past probe 2" every time but on a hang did not see the "past conf1_enable_res2" printf. So the hang is somewhere in the code below. Strangely enough when I put printf's between the inl/outl instructions I cannot cause a hang. I have run out of time today to fool with this but I wanted to pass the information along in case it narrows the scope of the problem down. I will be able to play with this more tommorrow. Stefan sent me some patches I will try those tommorrow also. pcibus.c: printf("Past probe 2\n") ; /*----------------------------------------------------- ** Well, is it Configuration mode 1, after all ? **----------------------------------------------------- */ oldval = inl (CONF1_ADDR_PORT); outl (CONF1_ADDR_PORT, CONF1_ENABLE_CHK2); result = inl (CONF1_ADDR_PORT); outl (CONF1_ADDR_PORT, oldval); if (result == CONF1_ENABLE_RES2) { pci_mechanism = 1; pci_maxdevice = 32; if (pcibus_check()) { return; } } printf("Past CONF1_ENABLE_RES2\n") ; Regards, Mark Hittinger Internet Manager WinNET Communications, Inc. bugs@win.net