From owner-freebsd-questions@FreeBSD.ORG Mon Feb 2 07:07:22 2004 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 343C316A4CE for ; Mon, 2 Feb 2004 07:07:22 -0800 (PST) Received: from anchor-post-33.mail.demon.net (anchor-post-33.mail.demon.net [194.217.242.91]) by mx1.FreeBSD.org (Postfix) with ESMTP id AB74943D4C for ; Mon, 2 Feb 2004 07:05:59 -0800 (PST) (envelope-from admin@sycos.co.uk) Received: from sycos.demon.co.uk ([158.152.248.21] helo=dpc27) by anchor-post-33.mail.demon.net with smtp (Exim 3.35 #1) id 1Anfe6-0004Ir-0X; Mon, 02 Feb 2004 15:05:55 +0000 Message-ID: <001f01c3e99e$0a7c51d0$1c77fea9@dpc27> From: "Admin" To: Date: Mon, 2 Feb 2004 15:05:43 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0019_01C3E99E.07EE53F0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-Content-Filtered-By: Mailman/MimeDel 2.1.1 cc: peter@sycos.co.uk Subject: Softc structure linkage problem X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Feb 2004 15:07:22 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0019_01C3E99E.07EE53F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable I am using FreeBSD Version 5.1. I am having problem to use the softc structure variables to assign the = pointer to make_dev and bus_alloc_resource functions. When I declare dev_t sdev as global variable and assign to make_dev as = follows: int unit =3D device_get_unit(device); sdev =3D make_dev(&sy_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "sy3c%d", = unit); I am able to create device node, load the kld and unload the kld. When I declare dev_t dev as part of sy_softc structure and assign the = scp->dev pointer to make_dev function as shown above, the code compiles = ok. When I load the kld with "kldload -v ./sy3c.ko" command, it flags = error. The errors log file err_log is attached. I have also attached the driver code for reference. Would you please advise a.s.a.p to resolve this problem. Regards Gurdial Chandra =20 ------=_NextPart_000_0019_01C3E99E.07EE53F0 Content-Type: application/octet-stream; name="sy3c.c" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="sy3c.c" /**********************************************************=0A= *=0A= * A simple KLD program to access and use the PCI functions=0A= *=0A= **********************************************************/=0A= =0A= #include /* defines used in kernel.h */=0A= #include =0A= #include =0A= #include =0A= #include /* types used in module initialization */=0A= #include /* cdevsw struct */=0A= #include /* uio struct */=0A= #include /* malloc region definitions */=0A= #include /* structs, prototypes for PCI Bus stuff */=0A= =0A= #include =0A= #include =0A= #include =0A= =0A= #include /* For get_pci macros! */=0A= #include =0A= =0A= /* XXX These should be defined in terms of bus-space ops */=0A= #define SY_INB(port) inb(port_start)=0A= #define SY_OUTB(port, val) (port_start, (val))=0A= =0A= /*=0A= * The softc automatically allocated by the parent bus using the size=0A= * specufied in the driver_t declaration below=0A= */=0A= #define DEVSOFTC(dev) (struct sy_softc *) (dev)->si_drv1=0A= #define DEVICESOFTC(dev) (struct sy_softc *) device_get_softc(dev)=0A= =0A= /* Device specific Misc defines */=0A= =0A= #define BUFFERSIZE 1024=0A= #define NUMPORTS 4=0A= #define MEMSIZE (4 * 1024) /* imaginable h/w buffer size */=0A= =0A= #define VEND_ID 0x10b5=0A= #define DEV_ID 0x906d=0A= #define SUBVEND_ID 0x5359=0A= #define SUBDEV_ID 0x324b=0A= #define ADDR_BAR0 0x10=0A= #define PCIR_BAR(num) (ADDR_BAR0 + (num * 4))=0A= =0A= /* One of these per allocated device */=0A= struct sy_softc {=0A= bus_space_tag_t bar0_bt;=0A= bus_space_handle_t bar0_bh;=0A= bus_space_tag_t bar1_bt;=0A= bus_space_handle_t bar1_bh;=0A= bus_space_tag_t bar2_bt;=0A= bus_space_handle_t bar2_bh;=0A= bus_space_tag_t bar3_bt;=0A= bus_space_handle_t bar3_bh;=0A= =0A= int bar0id;=0A= int bar1id;=0A= int bar2id;=0A= int bar3id;=0A= int irqid;=0A= struct resource* bar0res; /* resource for memory mapped runtime */=0A= struct resource* bar1res; /* resource for I/O */=0A= struct resource* bar2res; /* resource for address space 0 */=0A= struct resource* bar3res; /* resource for address space 1 */=0A= struct resource* irqres; /* resource for IRQ */=0A= device_t device;=0A= dev_t dev;=0A= void *intr_cookie;=0A= // void *vaddr; /* Virtual address of mem resource */=0A= // void *vaddr_plx;=0A= // void *vaddr_addrspace0;=0A= // void *vaddr_addrspace1;=0A= // char buffer[BUFFERSIZE]; /* if we needed to buffer something */=0A= };=0A= =0A= typedef struct sy_softc *scp;=0A= =0A= /* Function prototypes */=0A= =0A= static d_open_t sy_open;=0A= static d_close_t sy_close;=0A= static d_read_t sy_read;=0A= static d_write_t sy_write;=0A= static d_ioctl_t sy_ioctl;=0A= static void sy_intr(void *arg);=0A= =0A= /* Character device entry points */=0A= =0A= static struct cdevsw sy_cdevsw =3D {=0A= .d_open =3D sy_open,=0A= .d_close =3D sy_close,=0A= .d_read =3D sy_read,=0A= .d_write =3D sy_write,=0A= .d_ioctl =3D sy_ioctl,=0A= .d_name =3D "sy3c",=0A= };=0A= =0A= /* vars */=0A= static devclass_t sy_devclass;=0A= dev_t sdev;=0A= =0A= =0A= struct resource *res_memory; // resource for memory range=0A= struct resource *addrspace0; // resource for memory range=0A= struct resource *addrspace1; // resource for memory range=0A= struct resource *res_ioport; // resource for port range=0A= struct resource *res_irq; // resource for irq range=0A= int rid_memory;=0A= int rid_ioport;=0A= int rid_irq;=0A= bus_space_tag_t bt;=0A= bus_space_handle_t bh;=0A= =0A= =0A= /*=0A= *************************************=0A= * PCI Attachment structures and code=0A= *************************************=0A= */=0A= =0A= static int sy_pci_probe(device_t);=0A= static int sy_pci_attach(device_t);=0A= static int sy_pci_detach(device_t);=0A= //static int sy_pci_shutdown(device_t device);=0A= //static int sy_pci_suspend(device_t device);=0A= //static int sy_pci_resume(device_t device);=0A= =0A= static device_method_t sy_pci_methods[] =3D {=0A= /* Device interface */=0A= DEVMETHOD(device_probe, sy_pci_probe),=0A= DEVMETHOD(device_attach, sy_pci_attach),=0A= DEVMETHOD(device_detach, sy_pci_detach),=0A= // DEVMETHOD(device_shutdown, sy_pci_shutdown),=0A= // DEVMETHOD(device_suspend, sy_pci_suspend),=0A= // DEVMETHOD(device_resume, sy_pci_resume),=0A= =0A= { 0, 0 }=0A= };=0A= =0A= static driver_t sy_pci_driver =3D {=0A= "sy3c",=0A= sy_pci_methods,=0A= 0,=0A= sizeof(struct sy_softc),=0A= };=0A= =0A= DRIVER_MODULE(sy3c, pci, sy_pci_driver, sy_devclass, 0, 0);=0A= =0A= static struct _pcsid=0A= {=0A= u_int32_t type;=0A= const char *desc;=0A= } pci_ids[] =3D {=0A= { 0x906d10b5, "PLX Technology PLX 9060SD device" },=0A= { 0x00000000, NULL }=0A= };=0A= =0A= static int sy_attach(device_t device, struct sy_softc *scp);=0A= static int sy_detach(device_t device, struct sy_softc *scp);=0A= static int sy_allocate_resources(device_t device);=0A= static int sy_deallocate_resources(device_t device);=0A= =0A= =0A= /* We're more interested in probe/ attach than with = open/close/read/write at this point */=0A= =0A= /* PCI Support Functions */=0A= =0A= /*=0A= ** Return identification string if this device is sycos device=0A= */=0A= =0A= static int=0A= sy_pci_probe(device_t device)=0A= {=0A= u_int32_t type =3D pci_get_devid(device);=0A= struct _pcsid *ep =3D pci_ids;=0A= =0A= device_printf(device, "MyPCI Probe\nVendor ID: 0x%x\nDevice ID: 0x%x\n",=0A= pci_get_vendor(device), pci_get_device(device));=0A= =0A= if ((pci_get_vendor(device) =3D=3D 0x10b5) && (pci_get_device(device) = =3D=3D 0x906d))=0A= {=0A= printf("PLX 906D device found, probe successful!\n");=0A= return (0);=0A= }=0A= =0A= while (ep->type && ep->type !=3D type)=0A= ++ep;=0A= if (ep->desc) {=0A= device_set_desc(device, ep->desc);=0A= return 0; // If there might be a better driver, return -2=0A= }=0A= else=0A= return (ENXIO);=0A= }=0A= =0A= static int=0A= sy_pci_attach(device_t device)=0A= {=0A= int error;=0A= struct sy_softc *scp =3D (struct sy_softc *) device_get_softc(device);=0A= =0A= error =3D sy_attach(device, scp);=0A= if (error) {=0A= sy_pci_detach(device);=0A= }=0A= =0A= return (0);=0A= }=0A= =0A= static int=0A= sy_pci_detach (device_t device)=0A= {=0A= int error;=0A= struct sy_softc *scp =3D (struct sy_softc *) device_get_softc(device);=0A= =0A= error =3D sy_detach(device, scp);=0A= =0A= return (error);=0A= }=0A= =0A= /*=0A= **********************************=0A= * Common Attachment sub-functions=0A= **********************************=0A= */=0A= =0A= /* Attach function is only called if the probe is successful */=0A= =0A= static int=0A= sy_attach(device_t device, struct sy_softc *scp)=0A= {=0A= // struct sy_softc *scp =3D (struct sy_softc *) device_get_softc(device);=0A= device_t parent =3D device_get_parent(device);=0A= int unit =3D device_get_unit(device);=0A= =0A= printf("Sycos PCI Attach for : vendorID: 0x%x\n", = pci_get_vendor(device));=0A= =0A= scp->dev =3D make_dev(&sy_cdevsw, unit,=0A= 0, 0, 0600, "sy3c%d", unit);=0A= if (scp->dev =3D=3D NULL)=0A= printf("PCI device create failed!\n");=0A= =0A= printf("PCI device created!\n");=0A= /*=0A= scp->dev->si_drv1 =3D scp;=0A= =0A= sdev =3D make_dev(&sy_cdevsw, unit,=0A= UID_ROOT, GID_WHEEL, 0600, "sy3c%d", unit);=0A= if (sdev =3D=3D NULL)=0A= printf("PCI device create failed!\n");=0A= =0A= printf("PCI device created!\n");=0A= =0A= sdev->si_drv1 =3D scp;=0A= */=0A= if (sy_allocate_resources(device) !=3D 0) {=0A= goto errexit;=0A= }=0A= =0A= printf("Sycos pci device loaded.\n");=0A= /*=0A= bt =3D rman_get_bustag(res_memory);=0A= bh =3D rman_get_bushandle(res_memory);=0A= =0A= scp->bar0_bt =3D rman_get_bustag(scp->bar0res);=0A= scp->bar0_bh =3D rman_get_bushandle(scp->bar0res);=0A= =0A= scp->bar1_bt =3D rman_get_bustag(scp->bar1res);=0A= scp->bar1_bh =3D rman_get_bushandle(scp->bar1res);=0A= scp->bar2_bt =3D rman_get_bustag(scp->bar2res);=0A= scp->bar2_bh =3D rman_get_bushandle(scp->bar2res);=0A= scp->bar3_bt =3D rman_get_bustag(scp->bar3res);=0A= scp->bar3_bh =3D rman_get_bushandle(scp->bar3res);=0A= */=0A= =0A= /*=0A= * Register the interrupt handler here=0A= */=0A= =0A= =0A= =0A= /*=0A= * If we want to access the memory we will need to know where it was = mapped.=0A= *=0A= * Use of this function is discouraged, however. The device should be=0A= * accessed using bus_space_1,2,4 API, if it all possible.=0A= */=0A= =0A= // scp->vaddr_plx =3D rman_get_virtual(scp->bar0res);=0A= // scp->vaddr_addrspace0 =3D rman_get_virtual(scp->bar2res);=0A= printf("Device handles loaded.\n");=0A= =0A= return (0);=0A= =0A= errexit:=0A= /* Undo anything we may have done */=0A= sy_detach(device, scp);=0A= =0A= return (ENXIO);=0A= }=0A= =0A= /* Detach device */=0A= =0A= static int=0A= sy_detach(device_t device, struct sy_softc *scp)=0A= {=0A= device_t parent =3D device_get_parent(device);=0A= =0A= printf("My pci detach!\n");=0A= =0A= /*=0A= * Take our interrupt handler out of the list of handlers=0A= * that can handle this irq.=0A= */=0A= /*=0A= if (scp->intr_cookie !=3D NULL) {=0A= if (BUS_TEARDOWN_INTR(parent, device,=0A= scp->irqres, scp->intr_cookie) !=3D 0)=0A= printf("intr teardown failed.. continuing\n");=0A= scp->intr_cookie =3D NULL;=0A= }=0A= */=0A= /*=0A= * Deallocate any system resources we may have allocated=0A= * on behalf of this driver.=0A= */=0A= =0A= // scp->vaddr_plx =3D NULL;=0A= // scp->vaddr_addrspace0 =3D NULL;=0A= =0A= return sy_deallocate_resources(device);=0A= }=0A= =0A= static int=0A= sy_allocate_resources(device_t device)=0A= {=0A= int error;=0A= int size =3D 32; /* Size of port range used */=0A= struct sy_softc *scp =3D (struct sy_softc *) device_get_softc(device);=0A= =0A= printf("Allocation of PCI Base Addresses!\n");=0A= /*=0A= rid_memory =3D PCIR_BAR(0);=0A= res_memory =3D bus_alloc_resource(device, SYS_RES_MEMORY, = &(rid_memory), 0ul, ~0ul, 1, RF_ACTIVE);=0A= if (res_memory =3D=3D NULL)=0A= {=0A= printf("Memory allocation of PCI base register 0 failed!\n");=0A= goto errexit;=0A= }=0A= printf("PCI bar0 Memory allocated!\n");=0A= =0A= scp->bar0id =3D PCIR_BAR(0);=0A= scp->bar0res =3D bus_alloc_resource(device, SYS_RES_MEMORY, = &(scp->bar0id),=0A= 0, ~0, 1, RF_ACTIVE);=0A= if (scp->bar0res =3D=3D NULL) {=0A= printf("Memory allocation of PCI base register 0 failed!\n");=0A= goto errexit;=0A= }=0A= printf("PCI bar0 Memory allocated!\n");=0A= =0A= scp->bar1id =3D PCIR_BAR(1);=0A= scp->bar1res =3D bus_alloc_resource(device, SYS_RES_IOPORT, = &(scp->bar1id),=0A= 0, ~0, size, RF_ACTIVE);=0A= if (scp->bar1res =3D=3D NULL) {=0A= printf("I/O allocation of PCI base register 1 failed!\n");=0A= goto errexit;=0A= }=0A= printf("PCI bar1 I/O allocated!\n");=0A= =0A= scp->bar2id =3D PCIR_BAR(2);=0A= scp->bar2res =3D bus_alloc_resource(device, SYS_RES_MEMORY, = &(scp->bar2id),=0A= 0, ~0, 1, RF_ACTIVE);=0A= if (scp->bar2res =3D=3D NULL) {=0A= printf("Memory allocation of Address Space 0 failed!\n");=0A= goto errexit;=0A= }=0A= printf("PCI bar2 Memory allocated!\n");=0A= =0A= =0A= scp->bar3id =3D PCIR_BAR(3);=0A= scp->bar3res =3D bus_alloc_resource(device, SYS_RES_MEMORY, = &(scp->bar3id),=0A= 0, ~0, 1, RF_ACTIVE);=0A= if (scp->bar3res =3D=3D NULL) {=0A= printf("Memory allocation of Address Space 1 failed!\n");=0A= goto errexit;=0A= }=0A= printf("PCI bar3 Memory allocated!\n");=0A= */=0A= /*=0A= scp->irqid =3D 0x0;=0A= scp->irqres =3D bus_alloc_resource(device, SYS_RES_IRQ, &(scp->irqid),=0A= 0ul, ~0ul, 1, RF_SHAREABLE | RF_ACTIVE);=0A= if (scp->irqres =3D=3D NULL) {=0A= printf("IRQ allocation failed!\n");=0A= goto errexit;=0A= }=0A= */=0A= =0A= /* Interrupt handler set-up */=0A= /*=0A= error =3D bus_setup_intr(device, scp->irqres, INTR_TYPE_MISC,=0A= sy_intr, scp, &(scp->intr_cookie));=0A= if (error) {=0A= printf("Couldn't set up irq\n");=0A= goto errexit;=0A= }=0A= =0A= scp->irq_bt =3D rman_get_bustag(scp->irqres);=0A= scp->irq_bh =3D rman_get_bushandle(scp->irqres);=0A= */=0A= =0A= return (0);=0A= =0A= errexit:=0A= error =3D ENXIO;=0A= =0A= /* Cleanup, deallocate all assigned resources. */=0A= sy_deallocate_resources(device);=0A= return (ENXIO);=0A= }=0A= =0A= static int=0A= sy_deallocate_resources(device_t device)=0A= {=0A= struct sy_softc *scp =3D (struct sy_softc *) device_get_softc(device);=0A= =0A= printf("Deallocation of resources routine!\n");=0A= /*=0A= if (res_memory !=3D 0)=0A= {=0A= bus_deactivate_resource(device, SYS_RES_MEMORY, rid_memory, = res_memory);=0A= bus_release_resource(device, SYS_RES_MEMORY, rid_memory, res_memory);=0A= res_memory =3D 0;=0A= }=0A= =0A= if (scp->bar0res !=3D 0) {=0A= bus_deactivate_resource(device, SYS_RES_MEMORY, scp->bar0id, = scp->bar0res);=0A= bus_release_resource(device, SYS_RES_MEMORY, scp->bar0id, = scp->bar0res);=0A= scp->bar0res =3D 0;=0A= }=0A= =0A= if (scp->bar1res !=3D 0) {=0A= bus_deactivate_resource(device, SYS_RES_IOPORT, scp->bar1id, = scp->bar1res);=0A= bus_release_resource(device, SYS_RES_IOPORT, scp->bar1id, = scp->bar1res);=0A= scp->bar1res =3D 0;=0A= }=0A= =0A= if (scp->bar2res !=3D 0) {=0A= bus_deactivate_resource(device, SYS_RES_MEMORY, scp->bar2id, = scp->bar2res);=0A= bus_release_resource(device, SYS_RES_MEMORY, scp->bar2id, = scp->bar2res);=0A= scp->bar2res =3D 0;=0A= }=0A= =0A= =0A= if (scp->bar3res !=3D 0) {=0A= bus_deactivate_resource(device, SYS_RES_MEMORY, scp->bar3id, = scp->bar3res);=0A= bus_release_resource(device, SYS_RES_MEMORY, scp->bar3id, = scp->bar3res);=0A= scp->bar3res =3D 0;=0A= }=0A= */=0A= /*=0A= if (scp->irqres !=3D 0) {=0A= bus_deactivate_resource(device, SYS_RES_IRQ, scp->irqid, scp->irqres);=0A= bus_release_resource(device, SYS_RES_IRQ, scp->irqid, scp->irqres);=0A= scp->irqres =3D 0;=0A= }=0A= */=0A= /*=0A= if (sdev)=0A= destroy_dev(sdev);=0A= */=0A= /*=0A= if (scp->dev)=0A= destroy_dev(scp->dev);=0A= */=0A= return (0);=0A= }=0A= =0A= =0A= //static int=0A= //sy_intr(void *arg)=0A= //{=0A= // struct sy_softc *scp =3D (struct sy_softc *) arg;=0A= =0A= /*=0A= * Well, we got an interrupt, now what?=0A= *=0A= * Make sure that the interrupt routine will always terminate,=0A= * even in the face of "bogus" data from the card.=0A= */=0A= =0A= // return;=0A= //}=0A= =0A= static int=0A= sy_open(dev_t dev, int oflags, int devtype, d_thread_t *td)=0A= {=0A= int err =3D 0;=0A= struct sy_softc *scp =3D (struct sy_softc *) (dev)->si_drv1;=0A= =0A= printf("Opened device \"sy3c\" successfully.\n");=0A= return (err);=0A= }=0A= =0A= static int=0A= sy_close(dev_t dev, int fflags, int devtype, d_thread_t *td)=0A= {=0A= int err =3D 0;=0A= struct sy_softc *scp =3D (struct sy_softc *) (dev)->si_drv1;=0A= =0A= printf("Closing device \"sy3c.\"\n");=0A= return (err);=0A= }=0A= =0A= static int=0A= sy_read(dev_t dev, struct uio *uio, int ioflag)=0A= {=0A= int err =3D 0;=0A= struct sy_softc *scp =3D (struct sy_softc *) (dev)->si_drv1;=0A= =0A= printf("sy3c read!\n");=0A= return (err);=0A= }=0A= =0A= static int=0A= sy_write(dev_t dev, struct uio *uio, int ioflag)=0A= {=0A= int err =3D 0;=0A= struct sy_softc *scp =3D (struct sy_softc *) (dev)->si_drv1;=0A= =0A= printf("sy3c write!\n");=0A= return (err);=0A= }=0A= =0A= static int=0A= sy_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)=0A= {=0A= int err =3D 0;=0A= struct sy_softc *scp =3D (struct sy_softc *) (dev)->si_drv1;=0A= =0A= printf("sy3c ioctl!\n");=0A= return (err);=0A= }=0A= =0A= static void=0A= sy_intr(void *arg)=0A= {=0A= printf("sy3c interrupt!\n");=0A= return;=0A= }=0A= =0A= // Called during system shutdown after sync.=0A= /*=0A= static int=0A= sy_pci_shutdown(device_t device)=0A= {=0A= printf("My pci shutdown!\n");=0A= return (0);=0A= }=0A= =0A= // Device suspend routine=0A= =0A= static int=0A= sy_pci_suspend(device_t device)=0A= {=0A= printf("My pci suspend!\n");=0A= return (0);=0A= }=0A= =0A= // Device resume routine=0A= =0A= static int=0A= sy_pci_resume(device_t device)=0A= {=0A= printf("My pci resume!\n");=0A= return (0);=0A= }=0A= */=0A= ------=_NextPart_000_0019_01C3E99E.07EE53F0 Content-Type: application/octet-stream; name="err_log" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="err_log" Feb 2 12:25:27 kernel: sy3c0: MyPCI Probe=0A= Feb 2 12:25:27 kernel: Vendor ID: 0x1039=0A= Feb 2 12:25:27 kernel: Device ID: 0x7002=0A= Feb 2 12:25:27 kernel: sy3c0: MyPCI Probe=0A= Feb 2 12:25:27 kernel: Vendor ID: 0x13f6=0A= Feb 2 12:25:27 kernel: Device ID: 0x111=0A= Feb 2 12:25:27 kernel: sy3c0: MyPCI Probe=0A= Feb 2 12:25:27 kernel: Vendor ID: 0x10b5=0A= Feb 2 12:25:27 kernel: Device ID: 0x906d=0A= Feb 2 12:25:27 kernel: PLX 906D device found, probe successful!=0A= Feb 2 12:25:27 kernel: sy3c0 port 0x9000-0x90ff mem = 0xe3000000-0xe307ffff,0xee800000-0xee83ffff,0xe3800000-0xe38000ff irq 10 = at device 9.0 on pci0=0A= Feb 2 12:25:27 kernel: Sycos PCI Attach for : vendorID: 0x10b5=0A= Feb 2 12:25:27 kernel: PCI device created!=0A= Feb 2 12:25:27 kernel: Allocation of PCI Base Addresses!=0A= Feb 2 12:25:27 kernel: Sycos pci device loaded.=0A= Feb 2 12:25:27 kernel: Device handles loaded.=0A= Feb 2 12:25:27 kernel: sy3c1: MyPCI Probe=0A= Feb 2 12:25:27 kernel: Vendor ID: 0x10de=0A= Feb 2 12:25:27 kernel: Device ID: 0x171=0A= Feb 2 12:25:33 kernel: My pci detach!=0A= Feb 2 12:25:33 kernel: Deallocation of resources routine!=0A= Feb 2 12:25:33 kernel: sy3c0: detached=0A= =0A= Feb 2 12:43:48 syslogd: kernel boot file is /boot/kernel/kernel=0A= Feb 2 12:43:48 kernel: sy3c0: MyPCI Probe=0A= Feb 2 12:43:48 kernel: Vendor ID: 0x1039=0A= Feb 2 12:43:48 kernel: Device ID: 0x7002=0A= Feb 2 12:43:48 kernel: sy3c0: MyPCI Probe=0A= Feb 2 12:43:48 kernel: Vendor ID: 0x13f6=0A= Feb 2 12:43:48 kernel: Device ID: 0x111=0A= Feb 2 12:43:48 kernel: sy3c0: MyPCI Probe=0A= Feb 2 12:43:48 kernel: Vendor ID: 0x10b5=0A= Feb 2 12:43:48 kernel: Device ID: 0x906d=0A= Feb 2 12:43:48 kernel: PLX 906D device found, probe successful!=0A= Feb 2 12:43:48 kernel: sy3c0 port 0x9000-0x90ff mem = 0xe3000000-0xe307ffff,0xee800000-0xee83ffff,0xe3800000-0xe38000ff irq 10 = at device 9.0 on pci0=0A= Feb 2 12:43:48 kernel: Sycos PCI Attach for : vendorID: 0x10b5=0A= Feb 2 12:43:48 kernel: PCI device created!=0A= Feb 2 12:43:48 kernel: Allocation of PCI Base Addresses!=0A= Feb 2 12:43:48 kernel:=0A= Feb 2 12:43:48 kernel:=0A= Feb 2 12:43:48 kernel: Fatal trap 12: page fault while in kernel mode=0A= Feb 2 12:43:48 kernel: fault virtual address =3D 0x28=0A= Feb 2 12:43:48 kernel: fault code =3D supervisor write, page not = present=0A= Feb 2 12:43:48 kernel: instruction pointer =3D 0x8:0xc45c0c45=0A= Feb 2 12:43:48 kernel: stack pointer =3D 0x10:0xdcc9faec=0A= Feb 2 12:43:48 kernel: frame pointer =3D 0x10:0xdcc9fb10=0A= Feb 2 12:43:48 kernel: code segment =3D base 0x0, limit 0xfffff, type = 0x1b=0A= Feb 2 12:43:48 kernel: =3D DPL 0, pres 1, def32 1, gran 1=0A= Feb 2 12:43:48 kernel: processor eflags =3D interrupt enabled, resume, = IOPL =3D 0=0A= Feb 2 12:43:48 kernel: current process =3D 622 (kldload)=0A= Feb 2 12:43:48 kernel: trap number =3D 12=0A= Feb 2 12:43:48 kernel: panic: page fault=0A= Feb 2 12:43:48 kernel:=0A= Feb 2 12:43:48 kernel: syncing disks, buffers remaining... 2331 2331 = 2331 2331 2331 2331 2331 2331 2331 2331 2331 2331 2331 Copyright (c) = 1992-2003 The FreeBSD Project.=0A= ------=_NextPart_000_0019_01C3E99E.07EE53F0--