Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Feb 2004 15:05:43 -0000
From:      "Admin" <admin@sycos.co.uk>
To:        <freebsd-questions@freebsd.org>
Cc:        peter@sycos.co.uk
Subject:   Softc structure linkage problem
Message-ID:  <001f01c3e99e$0a7c51d0$1c77fea9@dpc27>

next in thread | raw e-mail | index | archive | help
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 <sys/param.h>		/* defines used in kernel.h */=0A=
#include <sys/module.h>=0A=
#include <sys/systm.h>=0A=
#include <sys/errno.h>=0A=
#include <sys/kernel.h>		/* types used in module initialization */=0A=
#include <sys/conf.h>		/* cdevsw struct */=0A=
#include <sys/uio.h>		/* uio struct */=0A=
#include <sys/malloc.h>		/* malloc region definitions */=0A=
#include <sys/bus.h>		/* structs, prototypes for PCI Bus stuff */=0A=
=0A=
#include <machine/bus.h>=0A=
#include <sys/rman.h>=0A=
#include <machine/resource.h>=0A=
=0A=
#include <dev/pci/pcivar.h>	/* For get_pci macros! */=0A=
#include <dev/pci/pcireg.h>=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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?001f01c3e99e$0a7c51d0$1c77fea9>