diff options
author | Leif Lindholm <leif.lindholm@linaro.org> | 2017-11-23 16:07:27 +0000 |
---|---|---|
committer | Leif Lindholm <leif.lindholm@linaro.org> | 2017-11-23 16:07:27 +0000 |
commit | d87f6e2da1ec667141d1fcbaa79d57b5efb7cbd3 (patch) | |
tree | 2b2e5fb9bc7c6028e433c9fe460182f14e1560d5 | |
parent | 596eaac01446521d649165c4b4c21851a17f0758 (diff) |
patches: add Juno and D03/D05 patches for 17.10-rc3
Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org>
4 files changed, 973 insertions, 0 deletions
diff --git a/patches/edk2-non-osi/0002-Hisilicon-D0x-Sas-fix-occasional-exception.patch b/patches/edk2-non-osi/0002-Hisilicon-D0x-Sas-fix-occasional-exception.patch new file mode 100644 index 0000000..8b135be --- /dev/null +++ b/patches/edk2-non-osi/0002-Hisilicon-D0x-Sas-fix-occasional-exception.patch @@ -0,0 +1,828 @@ +From 915399129a5fd6ee69f1ecfdde5609888bf122c1 Mon Sep 17 00:00:00 2001 +From: Heyi Guo <heyi.guo@linaro.org> +Date: Mon, 20 Nov 2017 21:21:24 +0800 +Subject: [PATCH 1/2] Hisilicon/D0x/Sas: fix occasional exception + +There is a temporary variable in SAS driver which was not initialized +with SAS disk, so the value of this variable depends on the unknown +stack content. Later it will be used as source buffer in gBS->CopyMem, +and a translation fault exception would occur if the value is beyond +valid memory address as a pointer. Details can be found in +https://bugs.linaro.org/show_bug.cgi?id=3464 + +This patch is to fix this bug, avoiding to use uninitialized value +when connecting SAS disks. + +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Heyi Guo <heyi.guo@linaro.org> +Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> +--- + .../Hisilicon/D03/Drivers/Sas/SasDriverDxe.efi | Bin 98144 -> 98112 bytes + .../Hisilicon/D05/Drivers/Sas/SasDriverDxe.efi | Bin 116288 -> 112832 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +diff --git a/Platform/Hisilicon/D03/Drivers/Sas/SasDriverDxe.efi b/Platform/Hisilicon/D03/Drivers/Sas/SasDriverDxe.efi +index c9b2ad6bd5d64610d5e1483e5be7b726f3535184..c37b922388c5dc23a45591b52736c3a134742d11 100644 +GIT binary patch +delta 9062 +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 +Wq_X5p$@P+;(%9hAfyjTw-~R$C0qLIr + +delta 9054 +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 +z5sdXgVp^R79Vrs)DPkHXWepA;)`y8{yS1>`k%0AwkVZ1GJJ2^y-F8>xpe8yOX!vhe +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 +DlO-Lp + +diff --git a/Platform/Hisilicon/D05/Drivers/Sas/SasDriverDxe.efi b/Platform/Hisilicon/D05/Drivers/Sas/SasDriverDxe.efi +index 9a680c5e04d8dc190c5a40d4c6721d0efb105c89..a57b8e170600a14b8b11fb629db461bfebdc8458 100644 +GIT binary patch +delta 19272 +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 + +delta 23018 +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 + +-- +2.11.0 + diff --git a/patches/edk2-non-osi/0003-Hisilicon-LpcSerialPortLib-return-SUCCESS-for-SetAtt.patch b/patches/edk2-non-osi/0003-Hisilicon-LpcSerialPortLib-return-SUCCESS-for-SetAtt.patch new file mode 100644 index 0000000..66286c0 --- /dev/null +++ b/patches/edk2-non-osi/0003-Hisilicon-LpcSerialPortLib-return-SUCCESS-for-SetAtt.patch @@ -0,0 +1,72 @@ +From 0b6df3e0671bf3aa52245785c7b07c52c6e9896b Mon Sep 17 00:00:00 2001 +From: Heyi Guo <heyi.guo@linaro.org> +Date: Mon, 20 Nov 2017 21:29:33 +0800 +Subject: [PATCH 2/2] Hisilicon/LpcSerialPortLib: return SUCCESS for + SetAttributes + +After EDK2 upgrades to 91cc526, SerialDxe will exit immediately if +SerialPortLib.SetAttributes returns error, and there will be no serial +port terminal in UEFI BDS. Since Hisilicon LPC serial port does not +support setting attributes, we change SerialPortSetAttributes in +LpcSerialPortLib to simply return SUCCESS to get around of this. + +The issue can be found in https://bugs.linaro.org/show_bug.cgi?id=3464 + +It only affects Hisilicon D03 platform since only D03 uses LPC serial +port. + +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Heyi Guo <heyi.guo@linaro.org> +Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> +--- + .../Uart/LpcSerialPortLib/LpcSerialPortLib.lib | Bin 16942 -> 16950 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +diff --git a/Silicon/Hisilicon/Hi1610/Library/Uart/LpcSerialPortLib/LpcSerialPortLib.lib b/Silicon/Hisilicon/Hi1610/Library/Uart/LpcSerialPortLib/LpcSerialPortLib.lib +index d6ce06802ccd527f239ab2c73b86c0ea730e717a..00c5c2fc377d049b027379583d437532d70acfca 100644 +GIT binary patch +delta 1641 +zcmaiyUuauZ9LMiDX-($Xnyl@;NxG)#KMdQFdvE^NQBx3_4(S@G8^e{kG`&r-rMV?d +zSzECgI*6j!bYEpJ;^x!Jz)lG$R9Jm+eGw`Xq#%O~guV##MMV5lPm-HGTnIZ4-*e9Q +z^E<!a?;OtN4f6F3QnH(5Sq@79$@f*?8>GLnaXMv54pvoi)->q%vpE>>hH;ySq*UG| +z7m1}}=s5A@fLrG{?&HeA$k271HmotX^TZQF`@NdGU3Gsks4X0K{ZaXB%X^27c>~8$ +z?oB*yvs;srB!`B)K1s}{<5@MK<`hwxx$1?*e6l$_Z+0|?ADQ{)@PWB&qFGIGd`5{~ +zO^Ro-iOk}RBF1uRo^_Pr#FRRxh|P}Sar;FSEk~LbEpJ*jiI7pVNoP$KvkU2DR+(|8 +zvw03v?Qsls{N#9Uk*OEXojLn@(2v!20VAC&*yAU$)!C2VI^D<Sl1f&|#WU`ll3Z}B +z*~~Ho-eH_xOlR`xEJQwo4ZizyR&~#(6{mZ4Hoc_GxR>NGTdQ;Fyn8kmpHtlPD(gwf +zaSMsblzQ#eRGcl-D@uNOUctB!UH_mB=ev#`o}7;-lvq5M&M)IH!H2Nb@x1;m<^jCa +zVWFNx`J7d5C1w=63zRzvlVg=gC^`z{I~aQkWDiBAP8gjBBn)G3fy7Yk-6k$X`wAq5 +z9i|r$?T^wW14_po*zC6w6L$I|hc+zi%drtb+dzoyBRUWvV<<AMV2A0CFb+mo<>+AK +z#geNYyGm+Fq&92$;b6>UyHD%BmWrc<<GPu(1<@nW*9gWuqvU(6c?4TMkmFv_7LCxq +zvCZgF_T#G~R-c|Fn!r;=|6pmWL#a>C=oR#cf~{4f*L2i{2}X08`@W7ILV?keR`(Mf +zox*)lzypuz*j+uLsEEA%Tg~3n;V(FtCEoUrX8)?gpCTd&HbHZL*U=@Yl3>52_4Kcf +zUZJ?dQoFP_=e27$9<mp^?C`X9s82^9ayMn(c2`U7*U=zES)}h!T$X>Pp%#R_9(s== +z<@JywxaAeu_t;@-!k=ET3S7QR?7J0xBI(69Oiy8-=@<mRNIDVq*MgS(qwF7UGpiR* +znVv#Vpc*t0h{EGB;j@5?xUmxu?IrC>i&}e)E16qi4)XTAX0Pk;=M*DB-WF`F-+4=i +z-+~$x=?Z(bpodtoTie_WjoN?EZa=IYY?OP%;c|$#y{kRp1s#4FYazkbruF)^jvg;> +zhxUy$L*X3e$%lw|1+szLUV&C9N<N<cM-lV$qzgSG0u38*C%}_&Ot8(g0hM9CygKqF +F`5!@Qbszu$ + +delta 1559 +zcma)*QD|FL7{~89x3$?iO|mTaHeqe<nhtFTIXCIey_-YZGHkoann)djg=$Q1O=j8~ +zl9aJA%+xW;K(h5O2oo0B)7ZmS4V1lgf>QBe*@LK{b1gp1?ZLe{5u~0pw|lr?=Xv;l +z=lg!=JKy=vJ$LCWxqg;h2)fj`rpNl#*caVzlJKUZC{Z<LG*neKRM#|a^>|E0l`t}2 +ztCI=hU0W9}u8O<*1VQ*@ZGG^-2RJBJylbNG+N$VpMwc7WpGB)>wSDNz+E~kcd)tSi +zAW&fjciq8YMpgTbxTeNf(V8oyO*U)JSS&wR%)ss0SN?Czj!v1$_ugfPXVba4DU%Hi +z719}96IjNYG1>pl+j{+eehz1$W9D>r>#WA%A9zAr^`>|;Tj1K~-s=RWFQq)K8z|lh +zeB=8bV?OzrV~59H*EQVnbwc--@Q*+I>~y|h<_lKZEEdfvbV&>;X*bSG({1m}WpkzM +zEFMZ>bjv<m^N)8Iv!~3`$-F5P)8iTI#Gy>8AdH)ZY$}(u3Z<l#%VAU=xw!h=)6eDh +z^x#OxF5Hx3?c@1W+DxVj+0scokVCb}4z-oIQ0Xkwzxv?mdY`<2N>`cOggaCwcTnNl +z0k^VFRJiw)$tWs&mWhHycbUA6I@cr;;Sq8UpN0)0pdKFBw&dk+kdI!-JqEdlM9%;j +zM1|{5sB`@m?!5!NXoBl}t+Kb`B9jP3WL%EBcKVyS0wsdb$>%8n$;fbUg}aSmG|dyd +zNU#`@aGSZjha9LC_abuOHQEeMI_P7#nH;#>(hMJW(Bl~3^kci|X$PHv#i?NDUU1N_ +zQRVa%J9@=I>!>q1c$)uqjZtfwC+#R?L6w3#?Yh4@Xo^5prES01g&(5IFKt@&1n$}k +z|8ykq@2ARv^L8<hz3t}J_F<XR?RL&?2YnTfINfJQdmZ#XLQ$D~1|!Po6%m=}5A-(? +zgRuzxPDDNyAq7-ptntCQZpV6zHGtYbNnS*ypYivy%+-%aT#q26F|q>*ZDY|HZJ30x +z!b9iqn5!Sp#~X{@h>ws6s(db^9%pn>T+pS!-}YsEWZTW=u7c@u;48cJs)H(cOP9$F +zoX{D)B;u+bArwD09hWgoZX;pH0sf#j#%OEPZtnd%%AAJni%UDG7dH%<bk$aj`)%|T +y#b8vTm$-RJqDypPzeN9_NFI>r4iUFrmPjw^noNheb5NoaBF^X%$=9sG74k0=*?O!1 + +-- +2.11.0 + diff --git a/patches/edk2/0003-Drivers-SataSiI3132Dxe-Fixed-PCI-IO-read-and-write-o.patch b/patches/edk2/0003-Drivers-SataSiI3132Dxe-Fixed-PCI-IO-read-and-write-o.patch new file mode 100644 index 0000000..77fe101 --- /dev/null +++ b/patches/edk2/0003-Drivers-SataSiI3132Dxe-Fixed-PCI-IO-read-and-write-o.patch @@ -0,0 +1,43 @@ +From 050d513bacec9999f9f3e9eeb558ead37d74c2ab Mon Sep 17 00:00:00 2001 +From: Daniil Egranov <daniil.egranov@arm.com> +Date: Fri, 27 Oct 2017 00:33:23 -0500 +Subject: [PATCH 1/2] Drivers/SataSiI3132Dxe: Fixed PCI IO read and write + operations + +The ATA pass through read should use PCI IO bus master write operation +and ATA pass through write should use PCI IO bus master read operation +as the read and write operations are executed from the bus master's +point of view. + +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Daniil Egranov <daniil.egranov@arm.com> +Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> +--- + EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c b/EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c +index 2fb5fd68db..a938563ebd 100644 +--- a/EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c ++++ b/EmbeddedPkg/Drivers/SataSiI3132Dxe/SiI3132AtaPassThru.c +@@ -104,7 +104,7 @@ SiI3132AtaPassThruCommand ( + }
+
+ Status = PciIo->Map (
+- PciIo, EfiPciIoOperationBusMasterRead,
++ PciIo, EfiPciIoOperationBusMasterWrite,
+ Packet->InDataBuffer, &InDataBufferLength, &PhysInDataBuffer, &PciAllocMapping
+ );
+ if (EFI_ERROR (Status)) {
+@@ -139,7 +139,7 @@ SiI3132AtaPassThruCommand ( + OutDataBufferLength = Packet->OutTransferLength * SataDevice->BlockSize;
+
+ Status = PciIo->Map (
+- PciIo, EfiPciIoOperationBusMasterWrite,
++ PciIo, EfiPciIoOperationBusMasterRead,
+ Packet->OutDataBuffer, &OutDataBufferLength, &PhysOutDataBuffer, &PciAllocMapping
+ );
+ if (EFI_ERROR (Status)) {
+-- +2.11.0 + diff --git a/patches/edk2/0004-Drivers-SataSiI3132Dxe-Allow-64-bit-DMA-transfer.patch b/patches/edk2/0004-Drivers-SataSiI3132Dxe-Allow-64-bit-DMA-transfer.patch new file mode 100644 index 0000000..4553d14 --- /dev/null +++ b/patches/edk2/0004-Drivers-SataSiI3132Dxe-Allow-64-bit-DMA-transfer.patch @@ -0,0 +1,30 @@ +From bca18551f62444b7840d6c93a82945ecf06ed9c6 Mon Sep 17 00:00:00 2001 +From: Daniil Egranov <daniil.egranov@arm.com> +Date: Fri, 27 Oct 2017 00:33:24 -0500 +Subject: [PATCH 2/2] Drivers/SataSiI3132Dxe: Allow 64-bit DMA transfer + +Set a PCI IO attribute allowing 64-bit DMA transfer. + +Contributed-under: TianoCore Contribution Agreement 1.1 +Signed-off-by: Daniil Egranov <daniil.egranov@arm.com> +Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> +--- + EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.c b/EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.c +index f4946552a0..c1760fdc1b 100644 +--- a/EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.c ++++ b/EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132.c +@@ -384,7 +384,7 @@ SataSiI3132DriverBindingStart ( + &Supports
+ );
+ if (!EFI_ERROR (Status)) {
+- Supports &= EFI_PCI_DEVICE_ENABLE;
++ Supports &= EFI_PCI_DEVICE_ENABLE | EFI_PCI_IO_ATTRIBUTE_DUAL_ADDRESS_CYCLE;
+ Status = PciIo->Attributes (
+ PciIo,
+ EfiPciIoAttributeOperationEnable,
+-- +2.11.0 + |