Looks good functionality-wise, but is a bit of a handful to look at (and
not just because I'm code reviewing on a phone).
Could you do it with a couple of temp vars?

/
    Leif

On Fri, 19 Oct 2018, 18:48 Ard Biesheuvel, <[email protected]>
wrote:

> Commit 9dd8190e4995 ("Silicon/SynQuacer: tweak PCI I/O windows for
> ACPI/Linux support") updated the min/max/offset definitions for the
> PCIe I/O resource windows on SynQuacer, and updated the read path of
> the platform's EfiCpuIo2 protocol implementation, but failed to update
> the write path as well, resulting in spurious errors if when attempting
> to write to PCIe I/O ports on PCIe RC #1, which uses translation for the
> I/O BAR window.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel <[email protected]>
> ---
>  
> Silicon/Socionext/SynQuacer/Drivers/SynQuacerPciCpuIo2Dxe/SynQuacerPciCpuIo2Dxe.c
> | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git
> a/Silicon/Socionext/SynQuacer/Drivers/SynQuacerPciCpuIo2Dxe/SynQuacerPciCpuIo2Dxe.c
> b/Silicon/Socionext/SynQuacer/Drivers/SynQuacerPciCpuIo2Dxe/SynQuacerPciCpuIo2Dxe.c
> index 736b20cd5129..e5cc3aef908d 100644
> ---
> a/Silicon/Socionext/SynQuacer/Drivers/SynQuacerPciCpuIo2Dxe/SynQuacerPciCpuIo2Dxe.c
> +++
> b/Silicon/Socionext/SynQuacer/Drivers/SynQuacerPciCpuIo2Dxe/SynQuacerPciCpuIo2Dxe.c
> @@ -518,12 +518,18 @@ CpuIoServiceWrite (
>      return Status;
>    }
>
> -  if ((Address >= SYNQUACER_PCI_SEG0_PORTIO_MIN) &&
> -      (Address <= SYNQUACER_PCI_SEG0_PORTIO_MAX)) {
> -    Address += SYNQUACER_PCI_SEG0_PORTIO_MEMBASE;
> -  } else if ((Address >= SYNQUACER_PCI_SEG1_PORTIO_MIN) &&
> -             (Address <= SYNQUACER_PCI_SEG1_PORTIO_MAX)) {
> -    Address += SYNQUACER_PCI_SEG1_PORTIO_MEMBASE;
> +  if ((Address >= (SYNQUACER_PCI_SEG0_PORTIO_MIN +
> +                   SYNQUACER_PCI_SEG0_PORTIO_OFFSET)) &&
> +      (Address <= (SYNQUACER_PCI_SEG0_PORTIO_MAX +
> +                   SYNQUACER_PCI_SEG0_PORTIO_OFFSET))) {
> +    Address += SYNQUACER_PCI_SEG0_PORTIO_MEMBASE -
> +               SYNQUACER_PCI_SEG0_PORTIO_OFFSET;
> +  } else if ((Address >= (SYNQUACER_PCI_SEG1_PORTIO_MIN +
> +                          SYNQUACER_PCI_SEG1_PORTIO_OFFSET)) &&
> +             (Address <= (SYNQUACER_PCI_SEG1_PORTIO_MAX +
> +                          SYNQUACER_PCI_SEG1_PORTIO_OFFSET))) {
> +    Address += SYNQUACER_PCI_SEG1_PORTIO_MEMBASE -
> +               SYNQUACER_PCI_SEG1_PORTIO_OFFSET;
>
>    } else {
>      ASSERT (FALSE);
> --
> 2.17.1
>
>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to