Two inline comments below:
> -----Original Message----- > From: xueshengfeng <xueshengf...@byosoft.com.cn> > Sent: Wednesday, September 22, 2021 11:18 AM > To: devel@edk2.groups.io; gaolim...@byosoft.com.cn; Wu, Hao A > <hao.a...@intel.com>; Ni, Ray <ray...@intel.com> > Cc: Xue, ShengfengX <shengfengx....@intel.com>; Liang, PanlingX > <panlingx.li...@intel.com> > Subject: [PATCH] On branch PCIBus dulePkg/PciBusDxe: > PciTestSupportedAttribute logic should be changed. > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3635 > > In file Edk2\MdeModulePkg\Bus\Pci\PciBusDxe\PciEnumeratorSupport.c > Function PciTestSupportedAttribute, This function is called when doing the > PCI > enumerate, it tries to test whether the device can support given attributes > by > follow steps. > 1), read the original register value > 2), set to the input register value > 3), read back the register value, return this value as output 4), restore > the > original value This will cause the enabled bits in this > register be disabled during this sequence. > > Below are the new suggested flow: > 1) , read the original register value. > 2), set to input register value OR(|) the original register value. > 3), read back the register value, return the value AND(&) the input > command value as output. > 4), restore the original value > > Above sequence will not change the enabled bits in the register, > and can the new supported attributes by the device. > > Signed-off-by: shengfengx....@intel.com > Reviewed-by: gaolim...@byosoft.com.cn Please fix the inconsistent space indent within the commit log message. > --- > MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c > b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c > index db1b35f8ef..2462f58833 100644 > --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c > +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c > @@ -933,6 +933,7 @@ PciTestSupportedAttribute ( > ) > { > EFI_TPL OldTpl; > + UINT16 CommandTemp = 0; Please separate the local variable definition and its initial value assignment. With the above 2 comments handled, Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > > // > // Preserve the original value > @@ -944,9 +945,10 @@ PciTestSupportedAttribute ( > // > OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL); > > - PCI_SET_COMMAND_REGISTER (PciIoDevice, *Command); > - PCI_READ_COMMAND_REGISTER (PciIoDevice, Command); > + PCI_SET_COMMAND_REGISTER (PciIoDevice, (*Command | *OldCommand)); > + PCI_READ_COMMAND_REGISTER (PciIoDevice, &CommandTemp); > > + *Command = (*Command) & CommandTemp; > // > // Write back the original value > // > -- > 2.31.1.windows.1 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#80944): https://edk2.groups.io/g/devel/message/80944 Mute This Topic: https://groups.io/mt/85783989/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-