On Tue, Aug 20, 2019 at 08:49:19PM +0200, Mark Kettenis wrote:
> The Ampere/Lenvo HR330A firmware doesn't set the _TTP bit on the IO
> window of its host bridges.  It really should since these bridges
> translate memory transactions into io transactions.  But it isn't the
> only one that doesn't get this aspect right.  So it is probably best
> to ignore _TTP and just assume it converts memory transactions into io
> transactions.
> 
> ok?

ok jsg@

> 
> 
> Index: arch/arm64/dev/acpipci.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm64/dev/acpipci.c,v
> retrieving revision 1.12
> diff -u -p -r1.12 acpipci.c
> --- arch/arm64/dev/acpipci.c  30 Jul 2019 21:44:15 -0000      1.12
> +++ arch/arm64/dev/acpipci.c  20 Aug 2019 18:43:15 -0000
> @@ -253,8 +253,10 @@ acpipci_parse_resources(int crsidx, unio
>               sc->sc_mem_trans = at;
>               break;
>       case LR_TYPE_IO:
> -             if ((tflags & LR_IO_TTP) == 0)
> -                     return 0;
> +             /*
> +              * Don't check _TTP as various firmwares don't set it,
> +              * even though they should!!
> +              */
>               extent_free(sc->sc_ioex, min, len, EX_WAITOK);
>               at = malloc(sizeof(struct acpipci_trans), M_DEVBUF, M_WAITOK);
>               at->at_iot = sc->sc_iot;
> 

Reply via email to