On 08/19/16 03:35, Star Zeng wrote: > Support multiple PCI segment for PCI_CONFIG2 opcodes. > > PiDxeS3BootScriptLib needs to be updated to consume PciSegmentLib > instead of PciLib. That means platforms need to add PciSegmentLib > declaration like below in platform dsc if the PciSegmentLib was > not declared in platform dsc before. > > PciSegmentLib|MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf > > For platforms only have one segment, > MdePkg/Library/BasePciSegmentLibPci/BasePciSegmentLibPci.inf is recommended > to be used and declared in platform dsc for PiDxeS3BootScriptLib to have > equivalent functionality with before. > > Cc: Jiewen Yao <[email protected]> > Cc: Michael D Kinney <[email protected]> > Cc: Chan Amy <[email protected]> > Cc: Laszlo Ersek <[email protected]> > Cc: Kelly Steele <[email protected]> > Cc: David Wei <[email protected]> > Cc: Chao Zhang <[email protected]> > > Star Zeng (6): > MdeModulePkg PiDxeS3BootScriptLib: Remove the trailing white spaces > MdeModulePkg PiDxeS3BootScriptLib: Support multiple PCI segment > Vlv2TbltDevicePkg: Declare PciSegmentLib in platform dsc > QuarkPlatformPkg: Declare PciSegmentLib in platform dsc > QuarkSocPkg/QuarkSocPkg.dsc: Declare PciSegmentLib > SecurityPkg/SecurityPkg.dsc: Declare PciSegmentLib > > .../PiDxeS3BootScriptLib/BootScriptExecute.c | 411 +++++++++---------- > .../BootScriptInternalFormat.h | 2 +- > .../Library/PiDxeS3BootScriptLib/BootScriptSave.c | 451 > ++++++++++----------- > .../PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf | 4 +- > .../PiDxeS3BootScriptLib/DxeS3BootScriptLib.uni | 2 +- > .../PiDxeS3BootScriptLib/InternalBootScriptLib.h | 26 +- > QuarkPlatformPkg/Quark.dsc | 1 + > QuarkPlatformPkg/QuarkMin.dsc | 1 + > QuarkSocPkg/QuarkSocPkg.dsc | 1 + > SecurityPkg/SecurityPkg.dsc | 1 + > Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 1 + > Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 1 + > Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 1 + > 13 files changed, 450 insertions(+), 453 deletions(-) >
For patches #1 and #2: Tested-by: Laszlo Ersek <[email protected]> (Also compared some logs.) I read the sub-thread under #2, but I don't understand Mike's concern. I can be wrong of course, but in my understanding, the boot script's internal representation does not change. The "saver" side only relaxes the Segment=0 requirement. And, the "executor side" accommodates nonzero segments in the Pci2 opcodes, and rebases the Pci[1] opcode functions on top of Pci2 opcode functions (with hardcoded Segment=0). I don't understand why calling PciSegmentLib functions with a UINT64 parameter where the segment bit-field is hardcoded to 0 is worse than calling PciLib (uncapable of nonzero segments) with an UINTN parameter. Is this about the cost of a function call on Ia32? That is, assuming a very long S3 boot script, the patch might noticeably slow down S3 resume on Ia32? Thanks Laszlo _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

