All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Hirst <rhirst@levanta.com>
To: parisc-linux@lists.parisc-linux.org
Subject: [parisc-linux] cvs head arch/parisc/kernel/drivers.c issues
Date: Sun, 31 Jul 2005 00:10:56 +0100	[thread overview]
Message-ID: <20050730231056.GC5500@levanta.com> (raw)

Trying to boot cvs head on a C360; this is what happens:

do_device_inventory() calls system_map_inventory(), which calls
pdc_system_map_find_mods() which returns devices in the following
order:

system_map_inventory() f2003000, -1 -1 -1 -1 8 0 + 63
system_map_inventory() ffd00000, -1 -1 -1 -1 -1 8 + 16
system_map_inventory() ffd05000, -1 -1 -1 -1 8 16 + 4
system_map_inventory() ffd06000, -1 -1 -1 -1 8 16 + 5
system_map_inventory() ffd02000, -1 -1 -1 -1 8 16 + 0
system_map_inventory() ffd04000, -1 -1 -1 -1 8 16 + 1
system_map_inventory() ffd08000, -1 -1 -1 -1 8 16 + 7
system_map_inventory() ffd08100, -1 -1 -1 -1 8 16 + 8
system_map_inventory() f203f000, -1 -1 -1 -1 -1 8 + 63
system_map_inventory() f103f000, -1 -1 -1 -1 -1 10 + 63
system_map_inventory() f1000000, -1 -1 -1 -1 -1 10 + 0
system_map_inventory() f2000000, -1 -1 -1 -1 -1 8 + 0

so the first device node we try to create is 8/0/63.  That causes
nodes 8 and 8/0 to get created by create_parisc_device() calling
alloc_tree_node() as it walks the path.  Those two nodes are left
with "dev->id.hw_type = HPHW_FAULTY" by create_tree_node().

Next we try to create device node 8/16.  We end up in match_by_id()
to check if a node for '8' exists already.  Because that node is
marked HPHW_FAULTY it gets ignored, and alloc_tree_node() ends up
creating a second node for device '8'.  We then go on to try and
register this second node '8' with sysfs and things start falling
apart because the node already exists.

I tried making match_by_id() treat HPHW_FAULTY nodes as valid
and then the boot gets much further:


Found devices:
1. Raven U/L2 Dino RS-232 at 0xf2003000 [8/0/63] { 10, 0x0, 0x006, 0x0008c }
2. Raven+ w SE FWSCSI Core RS-232 at 0xffd05000 [8/16/4] { 10, 0x0, 0x056, 0x0008c }
3. Raven+ w SE FWSCSI Core SCSI at 0xffd06000 [8/16/5] { 10, 0x0, 0x056, 0x00082 } 
4. Raven+ w SE FWSCSI Core Centronics at 0xffd02000 [8/16/0] { 10, 0x0, 0x056, 0x00074 },  additional addresses: 0xffd01000 0xffd03000 
5. Raven+ w SE FWSCSI Core Audio at 0xffd04000 [8/16/1] { 10, 0x4, 0x056, 0x0007b }
6. Raven+ w SE FWSCSI Core PS/2 Port at 0xffd08000 [8/16/7] { 10, 0x0, 0x056, 0x00084 }
7. Raven+ w SE FWSCSI Core PS/2 Port at 0xffd08100 [8/16/8] { 10, 0x0, 0x056, 0x00084 }
8. Dino PCI Bridge at 0xf2000000 [8/0] { 13, 0x3, 0x680, 0x0000a },  additional addresses: 0xf2800000 
9. Raven+ w SE FWSCSI Core BA at 0xffd00000 [8/16] { 11, 0x0, 0x056, 0x00081 },  additional addresses: 0xffd0c000 0xffc00000 
10. U2-IOA BC GSC+ Port at 0xf203f000 [8/63] { 7, 0x1, 0x501, 0x0000c }
11. Raven U/L2 Dino PS/2 Port at 0xf2001000 [8/1] { 10, 0x0, 0x006, 0x00096 }
12. U2-IOA BC GSC+ Port at 0xf103f000 [10/63] { 7, 0x1, 0x501, 0x0000c }
13. Cujo PCI Bridge at 0xf1000000 [10/0] { 13, 0x1, 0x682, 0x0000a },  additional addresses: 0xf1800000 0xf6000000 
14. Dino RS-232 at 0xf1003000 [10/3] { 10, 0x0, 0x007, 0x0008c }
15. U2-IOA BC Runway Port at 0xfff88000 [8] { 12, 0xf, 0x580, 0x0000b }
16. U2-IOA BC Runway Port at 0xfff8a000 [10] { 12, 0xf, 0x580, 0x0000b }
17. Raven W 360 (9000/780) at 0xfffa0000 [32] { 0, 0x0, 0x5c6, 0x00004 }
18. Memory at 0xfffb1000 [49] { 1, 0x0, 0x097, 0x00009 }
CPU(s): 1 x PA8500 (PCX-W) at 367.111100 MHz
Setting cache flush threshold to 720 (1 CPUs online)
Found U2 at 0xfff88000
Found U2 at 0xfff8a000
Lasi version 0 at 0xffd00000 found.
Dino version 3.1 found at 0xf2000000
DEV: registering device: ID = 'pci0000:00'
DEV: registering device: ID = '0000:00:13.0'
DEV: registering device: ID = '0000:00:14.0'
Cujo version 2.0 found at 0xf1000000
Enabling Cujo 2.0 bug workaround
DEV: registering device: ID = 'pci0000:01'
DEV: registering device: ID = '0000:01:04.0'
SCSI subsystem initialized
TC classifier action (bugs to netdev@vger.kernel.org cc hadi@cyberus.ca)
unwind_init: start = 0x10423e20, end = 0x10447940, entries = 9138
inotify syscall
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
PDC Stable Storage facility v0.09
Backtrace:
 [<10128170>] __wake_up+0x54/0x84
 [<1014b3b8>] __queue_work+0x60/0x80
 [<10142484>] run_timer_softirq+0x148/0x240
 [<1013c2dc>] __do_softirq+0x140/0x194
 [<10104958>] __lock_text_end+0x58/0x64
 [<1010e068>] intr_return+0x0/0x24
 [<103d7990>] klist_next+0x8/0x78
 [<102bea2c>] device_for_each_child+0x30/0x8c
 [<101122c0>] descend_children+0x20/0x50
 [<102bea50>] device_for_each_child+0x54/0x8c
 [<101122c0>] descend_children+0x20/0x50
 [<102bea50>] device_for_each_child+0x54/0x8c
 [<101122c0>] descend_children+0x20/0x50
 [<10112310>] for_each_padev+0x20/0x2c
 [<1011292c>] parse_tree_node+0x48/0x64
 [<10112a08>] check_parent+0x64/0x154


Bad Address (null pointer deref?): Code=6 regs=12ab5380 (Addr=081f0242)
Kernel panic - not syncing: Bad Address (null pointer deref?)


The devices are not printed in a logical order (e.g. 8/0/63 is before
8/0) which I think is a change for earlier kernels.

The change I made to match_by_id() was just to disable the call to
check_dev().

Anyone got any thoughts or suggestions on drivers.c or the device
discovery order?

Thanks,
  Richard

_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

             reply	other threads:[~2005-07-30 23:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-30 23:10 Richard Hirst [this message]
2005-07-31  6:12 ` [parisc-linux] cvs head arch/parisc/kernel/drivers.c issues Kyle McMartin
2005-07-31  9:00   ` Richard Hirst
2005-07-31 18:47     ` Kyle McMartin
2005-08-01 20:02       ` Richard Hirst
2005-07-31 19:32     ` Richard Hirst
2005-07-31 19:38       ` Kyle McMartin
2005-07-31 20:01         ` Richard Hirst
2005-07-31 20:13           ` Kyle McMartin
2005-07-31 20:23           ` Kyle McMartin
2005-07-31 20:27             ` Kyle McMartin
2005-08-01 13:48               ` Richard Hirst
2005-08-01 14:53                 ` Richard Hirst

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050730231056.GC5500@levanta.com \
    --to=rhirst@levanta.com \
    --cc=parisc-linux@lists.parisc-linux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.