[OpenBIOS] [PATCH] pci: fix accidental io_base reset for PCI host bridge

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Wed Jul 12 23:35:03 CEST 2017


On 09/07/17 18:48, Mark Cave-Ayland wrote:

> Commit c80a58b added a workaround to allow ioport access through the first PCI
> bridge found until its base and limits were programmed, so that on-board devices
> not directly attached to the PCI host bus could be used during OpenBIOS
> initialisation.
> 
> Unfortunately the logic was broken, and in fact the reset should only occur if
> we're the first PCI bridge that isn't the host bridge - otherwise we end up
> resetting io_base for the PCI host bus causing its devices to be mapped over
> existing in-built ioports causing strange behaviour.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
> ---
>  drivers/pci.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci.c b/drivers/pci.c
> index db92683..92938a4 100644
> --- a/drivers/pci.c
> +++ b/drivers/pci.c
> @@ -1426,7 +1426,7 @@ static void ob_configure_pci_bridge(pci_addr addr,
>      /* Always expose the legacy ioports on the first PCI bridge. If we
>         must have legacy devices behind a PCI bridge then they must be
>         on the first one discovered to ensure that the ioports will work. */
> -    if (*io_base < 0x1000) {
> +    if (primary_bus > 0 && *io_base < 0x1000) {
>          *io_base = 0x0;
>      }
>  
> 

Applied to master.


ATB,

Mark.



More information about the OpenBIOS mailing list