Yes,  that's true.

I recommend you to put it in loader.conf

On 6/8/07, Nate Lawson <[EMAIL PROTECTED]> wrote:
Hidetoshi Shimokawa wrote:
> simokawa    2007-06-07 13:20:49 UTC
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/dev/firewire     firewirereg.h fwohci.c sbp.c
>   Log:
>   Add a tunable hw.firewire.phydma_enable.
>
>   This is enabled by default.  It should be disabled for
>   those who are uneasy with peeking/poking from FireWire.
>
>   Please note sbp(4) and dcons(4) over FireWire need
>   this feature.
>
>   Revision  Changes    Path
>   1.48      +1 -0      src/sys/dev/firewire/firewirereg.h
>   1.91      +11 -6     src/sys/dev/firewire/fwohci.c
>   1.94      +7 -0      src/sys/dev/firewire/sbp.c
>
>
> Index: src/sys/dev/firewire/firewirereg.h
> diff -u src/sys/dev/firewire/firewirereg.h:1.47 
src/sys/dev/firewire/firewirereg.h:1.48
> --- src/sys/dev/firewire/firewirereg.h:1.47   Wed Jun  6 14:31:36 2007
> +++ src/sys/dev/firewire/firewirereg.h        Thu Jun  7 13:20:48 2007
> @@ -299,6 +299,7 @@
>
>  extern int firewire_debug;
>  extern devclass_t firewire_devclass;
> +extern int firewire_phydma_enable;
>
>  #ifdef __DragonFly__
>  #define              FWPRI           PCATCH
> Index: src/sys/dev/firewire/fwohci.c
> diff -u src/sys/dev/firewire/fwohci.c:1.90 src/sys/dev/firewire/fwohci.c:1.91
> --- src/sys/dev/firewire/fwohci.c:1.90        Wed Jun  6 14:31:36 2007
> +++ src/sys/dev/firewire/fwohci.c     Thu Jun  7 13:20:48 2007
> @@ -79,9 +79,13 @@
>  #undef OHCI_DEBUG
>
>  static int nocyclemaster = 0;
> +int firewire_phydma_enable = 1;
>  SYSCTL_DECL(_hw_firewire);
>  SYSCTL_INT(_hw_firewire, OID_AUTO, nocyclemaster, CTLFLAG_RW, 
&nocyclemaster, 0,
>          "Do not send cycle start packets");
> +SYSCTL_INT(_hw_firewire, OID_AUTO, phydma_enable, CTLFLAG_RW,
> +     &firewire_phydma_enable, 1, "Allow physical request DMA from firewire");
> +TUNABLE_INT("hw.firewire.phydma_enable", &firewire_phydma_enable);
>
>  static char dbcode[16][0x10]={"OUTM", "OUTL","INPM","INPL",
>               "STOR","LOAD","NOP ","STOP",};
> @@ -1862,12 +1866,13 @@
>
>               /* Allow async. request to us */
>               OWRITE(sc, OHCI_AREQHI, 1 << 31);
> -             /* XXX insecure ?? */
> -             /* allow from all nodes */
> -             OWRITE(sc, OHCI_PREQHI, 0x7fffffff);
> -             OWRITE(sc, OHCI_PREQLO, 0xffffffff);
> -             /* 0 to 4GB regison */
> -             OWRITE(sc, OHCI_PREQUPPER, 0x10000);
> +             if (firewire_phydma_enable) {
> +                     /* allow from all nodes */
> +                     OWRITE(sc, OHCI_PREQHI, 0x7fffffff);
> +                     OWRITE(sc, OHCI_PREQLO, 0xffffffff);
> +                     /* 0 to 4GB region */
> +                     OWRITE(sc, OHCI_PREQUPPER, 0x10000);
> +             }
>               /* Set ATRetries register */
>               OWRITE(sc, OHCI_ATRETRY, 1<<(13+16) | 0xfff);

I see this runs each time a PHY_SID intr arrives.  Is that enough to
really prevent access if a pre-existing host on the bus requests DMA?  I
don't think an intr is generated in that case.

Should this be a separate function run directly by the sysctl that sets
the filters immediately?

--
Nate




--
/\ Hidetoshi Shimokawa
\/  [EMAIL PROTECTED]
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to