From: David Gordon Hogan <dhog@plan9.bell-labs.com>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] Standalone cpu/auth..
Date: Wed, 15 May 2002 21:11:20 -0400 [thread overview]
Message-ID: <4b8975be661bc48197d5ce424643c9a5@plan9.bell-labs.com> (raw)
> I just tried the cpu/auth standalone on a dual PIII with Intel
> server mother board. At boot time, i see the message..
> .....
> pcirouting: South bridge FFFF, FFFF not found
> .....
> pcirouting: Can't find south bridge PCI 255.37.7
The first message is ``impossible''. I'd love to know
why it's happening. The second one is just improbable.
What does the "pci" command report? Also, here is
a program for dumping the contents of the BIOS PCI
routing table, please save it as "pcir.c", compile and
run, then send me the output:
#include <u.h>
#include <libc.h>
typedef struct Router Router;
typedef struct Slot Slot;
struct Slot
{
uchar bus; // Pci bus number
uchar dev; // Pci device number
uchar maps[12]; // Avoid structs! Link and mask.
uchar slot; // Add-in/built-in slot
uchar reserved;
};
struct Router
{
uchar signature[4]; // Routing table signature
uchar version[2]; // Version number
uchar size[2]; // Total table size
uchar bus; // Interrupt router bus number
uchar devfn; // Router's devfunc
uchar pciirqs[2]; // Exclusive PCI irqs
uchar compat[4]; // Compatible PCI interrupt router
uchar miniport[4]; // Miniport data
uchar reserved[11];
uchar checksum;
};
#define GET2(p) ((p)[0]|((p)[1]<<8))
#define DEV(devfn) (devfn>>3)
#define FN(devfn) (devfn&7)
void
main(int argc, char *argv[])
{
Slot *e;
Router *r;
int fd, size, i;
char file[64];
uchar *buf, *p, *ep, *m;
USED(argc, argv);
snprint(file, sizeof file, "#p/%d/mem", getpid());
fd = open(file, OREAD);
if(fd < 0)
sysfatal("open proc mem");
if(seek(fd, 0x80000000|0xf0000, 0) < 0)
sysfatal("seek proc mem");
buf = malloc(0x10000);
if(read(fd, buf, 0x10000) != 0x10000)
sysfatal("read proc mem");
ep = buf+0x10000;
for(p = buf; p < ep; p += 16)
if(p[0] == '$' && p[1] == 'P' && p[2] == 'I' && p[3] == 'R')
break;
if(p == ep) {
fprint(2, "pcir: PCI routing table not found\n");
exits("not found");
}
r = (Router *)p;
print("PCI interrupt routing table version %d.%d at %.5ux\n",
r->version[1], r->version[0], p-buf+0xf0000);
print("South Bridge %d.%d.%d, irqs %.4uX compat %.4uX/%.4uX\n",
r->bus, DEV(r->devfn), FN(r->devfn), GET2(r->pciirqs),
GET2(&r->compat[0]), GET2(&r->compat[2]));
print("miniport data: %.2uX %.2uX %.2uX %.2uX\n",
r->miniport[0], r->miniport[1], r->miniport[2], r->miniport[3]);
size = GET2(r->size);
for(e = (Slot *)&r[1]; (uchar *)e < p + size; e++) {
print("%d.%d.%d %.2uX:\t", e->bus, DEV(e->dev), FN(e->dev), e->slot);
for(i = 0; i != 4; i++) {
m = &e->maps[i * 3];
print("[%d] %.2uX %.4uX ", i, m[0], (m[2] << 8)|m[1]);
}
print("\n");
}
exits(nil);
}
next reply other threads:[~2002-05-16 1:11 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-16 1:11 David Gordon Hogan [this message]
2002-05-16 13:06 ` Ish Rattan
2002-05-16 13:07 ` Ish Rattan
-- strict thread matches above, loose matches on Subject: below --
2002-05-17 21:48 Ish Rattan
2002-05-16 19:26 David Gordon Hogan
2002-05-16 19:34 ` Ish Rattan
2002-05-16 18:02 David Gordon Hogan
2002-05-16 18:24 ` Ish Rattan
2002-05-16 1:21 rsc
2002-05-16 0:55 Ish Rattan
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=4b8975be661bc48197d5ce424643c9a5@plan9.bell-labs.com \
--to=dhog@plan9.bell-labs.com \
--cc=9fans@cse.psu.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).