public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Shi, Steven" <steven.shi@intel.com>
To: "Ni, Ruiyu" <ruiyu.ni@intel.com>, Laszlo Ersek <lersek@redhat.com>
Cc: "Zeng, Star" <star.zeng@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: Re: [PATCH] PcAtChipsetPkg/IsaAcpiDxe: Restore PCI attributes correctly
Date: Tue, 7 Nov 2017 08:14:00 +0000	[thread overview]
Message-ID: <06C8AB66E78EE34A949939824ABE2B313B5C817C@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <734D49CCEBEEF84792F5B80ED585239D5BAB5822@SHSMSX104.ccr.corp.intel.com>

This patch can fix the Bug 405 issue (https://bugzilla.tianocore.org/show_bug.cgi?id=405). Thank you!



Steven Shi
Intel\SSG\STO\UEFI Firmware

Tel: +86 021-61166522
iNet: 821-6522


> -----Original Message-----
> From: Ni, Ruiyu
> Sent: Tuesday, November 7, 2017 1:36 PM
> To: Laszlo Ersek <lersek@redhat.com>; Shi, Steven <steven.shi@intel.com>
> Cc: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org
> Subject: RE: [PATCH] PcAtChipsetPkg/IsaAcpiDxe: Restore PCI attributes
> correctly
> 
> Laszlo,
> Sure I will add the Bugzilla url in the commit message.
> 
> Steven,
> Could you please check whether this patch can fix your "reconnect -r" hang?
> 
> Thanks/Ray
> 
> > -----Original Message-----
> > From: Laszlo Ersek [mailto:lersek@redhat.com]
> > Sent: Tuesday, November 7, 2017 7:23 AM
> > To: Ni, Ruiyu <ruiyu.ni@intel.com>; edk2-devel@lists.01.org
> > Cc: Zeng, Star <star.zeng@intel.com>; Shi, Steven <steven.shi@intel.com>
> > Subject: Re: [PATCH] PcAtChipsetPkg/IsaAcpiDxe: Restore PCI attributes
> > correctly
> >
> > Hi Ray,
> >
> > On 11/03/17 09:28, Ruiyu Ni wrote:
> > > The original code enables some BITs in PCI attributes in Start(), but
> > > wrongly to disable these BITs in Stop().
> > >
> > > The correct behavior is to save the original PCI attributes before
> > > enables some BITs in Start(), and restore to original value in Stop().
> > >
> > > Contributed-under: TianoCore Contribution Agreement 1.1
> > > Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
> > > Cc: Star Zeng <star.zeng@intel.com>
> > > Cc: Laszlo Ersek <lersek@redhat.com>
> > > ---
> > >  PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c | 44
> > > +++++++++++++++++----------------
> > > PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h |  3 ++-
> > >  2 files changed, 25 insertions(+), 22 deletions(-)
> >
> > Is this for <https://bugzilla.tianocore.org/show_bug.cgi?id=405>?
> >
> > If so, can you please add the reference to the commit message?
> >
> > Also, I think we should ask Steven to test the patch. (CC'd.)
> >
> > I'll try to comment more later.
> >
> > Thanks
> > Laszlo
> >
> >
> > >
> > > diff --git a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
> > > b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
> > > index 32381b112d..60d2fb5a5b 100644
> > > --- a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
> > > +++ b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.c
> > > @@ -172,6 +172,7 @@ PcatIsaAcpiDriverBindingStart (
> > >    EFI_PCI_IO_PROTOCOL  *PciIo;
> > >    PCAT_ISA_ACPI_DEV    *PcatIsaAcpiDev;
> > >    UINT64               Supports;
> > > +  UINT64               OriginalAttributes;
> > >    BOOLEAN              Enabled;
> > >
> > >    Enabled = FALSE;
> > > @@ -210,9 +211,18 @@ PcatIsaAcpiDriverBindingStart (
> > >    if (Supports == 0 || Supports == (EFI_PCI_IO_ATTRIBUTE_ISA_IO |
> > EFI_PCI_IO_ATTRIBUTE_ISA_IO_16)) {
> > >      Status = EFI_UNSUPPORTED;
> > >      goto Done;
> > > -  }
> > > +  }
> > > +
> > > +  Status = PciIo->Attributes (
> > > +                    PciIo,
> > > +                    EfiPciIoAttributeOperationGet,
> > > +                    0,
> > > +                    &OriginalAttributes
> > > +                    );
> > > +  if (EFI_ERROR (Status)) {
> > > +    goto Done;
> > > +  }
> > >
> > > -  Enabled = TRUE;
> > >    Status = PciIo->Attributes (
> > >                      PciIo,
> > >                      EfiPciIoAttributeOperationEnable, @@ -222,7
> > > +232,8 @@ PcatIsaAcpiDriverBindingStart (
> > >    if (EFI_ERROR (Status)) {
> > >      goto Done;
> > >    }
> > > -
> > > +
> > > +  Enabled = TRUE;
> > >    //
> > >    // Allocate memory for the PCAT ISA ACPI Device structure
> > >    //
> > > @@ -239,9 +250,10 @@ PcatIsaAcpiDriverBindingStart (
> > >    //
> > >    // Initialize the PCAT ISA ACPI Device structure
> > >    //
> > > -  PcatIsaAcpiDev->Signature = PCAT_ISA_ACPI_DEV_SIGNATURE;
> > > -  PcatIsaAcpiDev->Handle    = Controller;
> > > -  PcatIsaAcpiDev->PciIo     = PciIo;
> > > +  PcatIsaAcpiDev->Signature         = PCAT_ISA_ACPI_DEV_SIGNATURE;
> > > +  PcatIsaAcpiDev->Handle            = Controller;
> > > +  PcatIsaAcpiDev->PciIo             = PciIo;
> > > +  PcatIsaAcpiDev->OriginalAttribute = OriginalAttributes;
> > >
> > >    //
> > >    // Initialize PcatIsaAcpiDeviceList @@ -274,8 +286,8 @@ Done:
> > >      if (PciIo != NULL && Enabled) {
> > >        PciIo->Attributes (
> > >                 PciIo,
> > > -               EfiPciIoAttributeOperationDisable,
> > > -               EFI_PCI_DEVICE_ENABLE | Supports |
> > EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO,
> > > +               EfiPciIoAttributeOperationSet,
> > > +               OriginalAttributes,
> > >                 NULL
> > >                 );
> > >      }
> > > @@ -321,7 +333,6 @@ PcatIsaAcpiDriverBindingStop (
> > >    EFI_STATUS             Status;
> > >    EFI_ISA_ACPI_PROTOCOL  *IsaAcpi;
> > >    PCAT_ISA_ACPI_DEV      *PcatIsaAcpiDev;
> > > -  UINT64                 Supports;
> > >
> > >    //
> > >    // Get the ISA ACPI Protocol Interface @@ -348,23 +359,14 @@
> > > PcatIsaAcpiDriverBindingStop (
> > >    //
> > >    Status = PcatIsaAcpiDev->PciIo->Attributes (
> > >                                      PcatIsaAcpiDev->PciIo,
> > > -                                    EfiPciIoAttributeOperationSupported,
> > > -                                    0,
> > > -                                    &Supports
> > > +                                    EfiPciIoAttributeOperationSet,
> > > +                                    PcatIsaAcpiDev->OriginalAttribute,
> > > +                                    0
> > >                                      );
> > >    if (EFI_ERROR (Status)) {
> > >      return Status;
> > >    }
> > >
> > > -  Supports &= (UINT64) (EFI_PCI_IO_ATTRIBUTE_ISA_IO |
> > > EFI_PCI_IO_ATTRIBUTE_ISA_IO_16);
> > > -
> > > -  PcatIsaAcpiDev->PciIo->Attributes (
> > > -                           PcatIsaAcpiDev->PciIo,
> > > -                           EfiPciIoAttributeOperationDisable,
> > > -                           EFI_PCI_DEVICE_ENABLE | Supports |
> > EFI_PCI_IO_ATTRIBUTE_ISA_MOTHERBOARD_IO,
> > > -                           NULL
> > > -                           );
> > > -
> > >    //
> > >    // Uninstall protocol interface: EFI_ISA_ACPI_PROTOCOL
> > >    //
> > > diff --git a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
> > > b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
> > > index 0671127644..3ad3a3f313 100644
> > > --- a/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
> > > +++ b/PcAtChipsetPkg/IsaAcpiDxe/PcatIsaAcpi.h
> > > @@ -1,7 +1,7 @@
> > >  /** @file
> > >    EFI PCAT ISA ACPI Driver for a Generic PC Platform
> > >
> > > -Copyright (c) 2006 - 2011, Intel Corporation. All rights
> > > reserved.<BR>
> > > +Copyright (c) 2006 - 2017, Intel Corporation. All rights
> > > +reserved.<BR>
> > >  This program and the accompanying materials
> > >  are licensed and made available under the terms and conditions of the
> BSD
> > License
> > >  which accompanies this distribution.  The full text of the license may be
> > found at
> > > @@ -43,6 +43,7 @@ typedef struct {
> > >    EFI_HANDLE             Handle;
> > >    EFI_ISA_ACPI_PROTOCOL  IsaAcpi;
> > >    EFI_PCI_IO_PROTOCOL    *PciIo;
> > > +  UINT64                 OriginalAttribute;
> > >  } PCAT_ISA_ACPI_DEV;
> > >
> > >  #define PCAT_ISA_ACPI_DEV_FROM_THIS(a) BASE_CR(a,
> > PCAT_ISA_ACPI_DEV,
> > > IsaAcpi)
> > >


  reply	other threads:[~2017-11-07  8:10 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-03  8:28 [PATCH] PcAtChipsetPkg/IsaAcpiDxe: Restore PCI attributes correctly Ruiyu Ni
2017-11-06 23:23 ` Laszlo Ersek
2017-11-07  5:35   ` Ni, Ruiyu
2017-11-07  8:14     ` Shi, Steven [this message]
2017-11-07  8:43 ` Zeng, Star
2017-11-07 17:49 ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=06C8AB66E78EE34A949939824ABE2B313B5C817C@shsmsx102.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox