Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jun 2003 04:21:27 -0500
From:      "Frank S. Fejes III" <frank@oopdreams.com>
To:        freebsd-questions@freebsd.org
Subject:   System freeze after PPP disconnect on Sony Vaio R505 and
Message-ID:  <E19TI5u-0003q0-00@pintail.mail.pas.earthlink.net>

next in thread | raw e-mail | index | archive | help
 5.1-RELEASE
Message-Id: <20030620042127.000360f5.frank@oopdreams.com>
Organization: oopdreams software, inc.
X-Mailer: Sylpheed version 0.9.2 (GTK+ 1.2.10; i686-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Hello all.  I have installed FreeBSD 5.1-RELEASE on a Sony R505JL laptop
and the system is regularly hanging/freezing after disconnecting ppp
connections.  This laptop has required a few slight configuration changes
to run at all including:

+ changing the BIOS to disable plug and play...the kernel would panic
  during the installation otherwise
+ adding hw.pci.allow_unsupported_io_range="1" to the loader.conf file...
  the system would freeze with the insertion of a pcmcia card otherwise
+ patching /usr/src/sys/dev/pci/pci.c in order to get USB to work at all
  (see the end of the post for this patch if interested)

As a little background on the laptop, it is ACPI-based and ships with
a firewire docking station with cdrom and floppy.  Both work under FreeBSD
and, in fact, FreeBSD is the first free unix I've used on the laptop
that can actually install off that firewire cdrom device (Debian Linux and
NetBSD were the other two operating systems I've run on the laptop - btw
the machine is stable with both).

Back to the freeze, all I need to do to repeat it is to connect using
ppp (ie, ppp -ddial isp) then disconnect (kill pid of the ppp process).  A
few seconds after the process has been killed the system will freeze and
the fan will immediately start blowing on high.  I cannot ping or otherwise
connect to the machine from another machine on the network and am forced
to use the power button.  I see nothing in the error logs except, as I
connect, I occasionally see an entry like:

Jun 18 17:22:23 vaibsd kernel: sio4: 1 more silo overflow (total 1)

I have enabled debugging in the kernel in hopes of perhaps seeing more
detail before/during the freeze but see no other messages.

On a similar (hopefully related) note, if I attempt to power down the
machine using 'shutdown -p now', the system will also freeze at the
poweroff point and the fan will start blowing at high.  The only difference
is that even the power button will not allow the system to reboot...I must
physically remove and reattach the battery pack.

If I disable ACPI then the system does not hang but I also cannot use
the firewire device, USB, or the pcmcia slot so that's not really an
option.

Has anyone seen this problem or worked around it?  Is there anything I
can do on my end to try to get more detail that could help pin down
the problem?

Thanks!

--frank

PS: Here is the pci.c patch I referred to above that made USB work.  Even
    if I do NOT use this patch, the system will still freeze upon ppp
    disconnect and shutdown with the -p option.

*** pci.c.orig  Tue Apr 15 22:15:08 2003
--- pci.c       Mon Jun 16 13:45:09 2003
***************
*** 169,173 ****
--- 169,175 ----
  
  static int pci_enable_io_modes = 1;
+ static int pci_route_existing = 1;
  TUNABLE_INT("hw.pci.enable_io_modes", (int *)&pci_enable_io_modes);
+ TUNABLE_INT("hw.pci.route_existing", (int *)&pci_route_existing);
  SYSCTL_INT(_hw_pci, OID_AUTO, enable_io_modes, CTLFLAG_RW,
      &pci_enable_io_modes, 1,
***************
*** 175,178 ****
--- 177,185 ----
  enable these bits correctly.  We'd like to do this all the time, but
there\n\
  are some peripherals that this causes problems with.");
+ SYSCTL_INT(_hw_pci, OID_AUTO, route_existing, CTLFLAG_RW,
+     &pci_route_existing, 1,
+     "Perform interrupt routing for devices with wired PCI interrupt
pins\n\
+ and legacy interrupt lines.  Sony VAIO GRX670 requires this for audio\n\
+ interrupts.");
  
  /* Find a device_t by bus/slot/function */
***************
*** 808,811 ****
--- 815,824 ----
                 */
                cfg->intline = PCIB_ROUTE_INTERRUPT(pcib, dev, cfg->intpin);
+ #else
+                 /*
+                  * XXX: Do we need to re-program the device's PCIREG
intline?
+                  */
+                 if (pci_route_existing)
+                         cfg->intline = PCIB_ROUTE_INTERRUPT(pcib, dev,
+                         cfg->intpin);
  #endif
                resource_list_add(rl, SYS_RES_IRQ, 0, cfg->intline,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E19TI5u-0003q0-00>