Date: Tue, 15 Apr 2003 10:31:19 -0400 (EDT) From: "Matthew N. Dodd" <mdodd@FreeBSD.ORG> To: "M. Warner Losh" <imp@bsdimp.com> Cc: cvs-src@FreeBSD.ORG Subject: Re: cvs commit: src/sys/dev/fxp if_fxp.c Message-ID: <20030415102955.S99028@sasami.jurai.net> In-Reply-To: <20030415.082727.65119004.imp@bsdimp.com> References: <200304140945.h3E9jPCe005099@repoman.freebsd.org> <20030414124016.O39446@sasami.jurai.net> <20030415.082727.65119004.imp@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 15 Apr 2003, M. Warner Losh wrote:
> Yup. Here's the patch I came up with. Care to review?
I'd like to read the BARs and see if its enabled so we can emit a warning
if its not (and a driver is requesting it.)
This may be an early notifiation we can provide to users that their box
may not be setup correctly.
Other than that, it looks fine.
> Index: pci.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/pci/pci.c,v
> retrieving revision 1.212
> diff -u -r1.212 pci.c
> --- pci.c 19 Feb 2003 05:47:09 -0000 1.212
> +++ pci.c 15 Apr 2003 14:23:03 -0000
> @@ -1301,21 +1301,33 @@
> * XXX add support here for SYS_RES_IOPORT and SYS_RES_MEMORY
> */
> if (device_get_parent(child) == dev) {
> - /*
> - * If the child device doesn't have an interrupt routed
> - * and is deserving of an interrupt, try to assign it one.
> - */
> - if ((type == SYS_RES_IRQ) &&
> - !PCI_INTERRUPT_VALID(cfg->intline) &&
> - (cfg->intpin != 0)) {
> - cfg->intline = PCIB_ROUTE_INTERRUPT(
> - device_get_parent(dev), child, cfg->intpin);
> - if (PCI_INTERRUPT_VALID(cfg->intline)) {
> - pci_write_config(child, PCIR_INTLINE,
> - cfg->intline, 1);
> - resource_list_add(rl, SYS_RES_IRQ, 0,
> - cfg->intline, cfg->intline, 1);
> + switch (type) {
> + case SYS_RES_IRQ:
> + /*
> + * If the child device doesn't have an
> + * interrupt routed and is deserving of an
> + * interrupt, try to assign it one.
> + */
> + if (!PCI_INTERRUPT_VALID(cfg->intline) &&
> + (cfg->intpin != 0)) {
> + cfg->intline = PCIB_ROUTE_INTERRUPT(
> + device_get_parent(dev), child, cfg->intpin);
> + if (PCI_INTERRUPT_VALID(cfg->intline)) {
> + pci_write_config(child, PCIR_INTLINE,
> + cfg->intline, 1);
> + resource_list_add(rl, SYS_RES_IRQ, 0,
> + cfg->intline, cfg->intline, 1);
> + }
> }
> + break;
> + case SYS_RES_IOPORT:
> + case SYS_RES_MEMORY:
> + /*
> + * Enable the I/O mode. We should also be allocating
> + * resources too. XXX
> + */
> + pci_enable_io_method(dev, child, type);
> + break;
> }
> }
>
>
--
| Matthew N. Dodd | '78 Datsun 280Z | '75 Volvo 164E | FreeBSD/NetBSD |
| winter@jurai.net | 2 x '84 Volvo 245DL | ix86,sparc,pmax |
| http://www.jurai.net/~winter | For Great Justice! | ISO8802.5 4ever |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030415102955.S99028>
