I have installed FreeBSD 4.7-stable to may laptop pc.
It is an old ISA based machine.

I found 4.7-stable kernel crashes in fatal trap 12 at boot time 
on the machine, while 4.7-RC kernel worked well.

So I examined differences between the versions 
and found new implementation of nexus_print_all_resources() 
in sys/i386/i386/nexus.c caused the trouble.
On my machine, DEVTONX(dev) at first line of the function 
returns null pointer for device isa0, and then a pointer 
reference in the next line leads to page fault.

I could workarounded the problem as bellow, but i wonder 
what's the right way?
Which is the case whether
- my isa controller is broken or buggy
- or that is bug accompanied by recent changes on kernl ?


*** nexus.c.bk  Mon Oct 14 15:12:41 2002
--- nexus.c     Mon Oct 14 16:40:33 2002
***************
*** 257,265 ****
  static int
  nexus_print_all_resources(device_t dev)
  {
-       struct  nexus_device *ndev = DEVTONX(dev);
-       struct resource_list *rl = &ndev->nx_resources;
        int retval = 0;
  
        if (SLIST_FIRST(rl))
                retval += printf(" at");
--- 257,270 ----
  static int
  nexus_print_all_resources(device_t dev)
  {
        int retval = 0;
+       struct  nexus_device *ndev = DEVTONX(dev);
+       struct resource_list *rl;
+ 
+       if( ! ndev ){
+               retval += printf( "(no rerource infomation)");
+               return retval;
+       }
  
        if (SLIST_FIRST(rl))
                retval += printf(" at");

----
Hirofumi SHINKE, Yokohama, Japan
[EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-stable" in the body of the message

Reply via email to