v3-v4: Rebase/Split patch for newer edk2/OpenPlatformPkg
v2-v3: Add JunoR2 support, replace CPU MIDR code with board revision detection
v1->v2: General cleanups, move juno revision macro info platform.h
SMBIOS data is consumed by a wide range of enterprise applications.
Fill in the basic requirements of the SMBIOS specification by hardcoding
the minimum required structures and data using Juno information. With
this change both the EFI shell, BDS and linux dmidecode commands return
useful information.
This patch set is actually against both edk2 and OpenPlatformPkg. The first
three patches apply against edk2, the last three against OpenPlatformPkg.
Jeremy Linton (3):
ArmPlatformPkg: Add A72 CPU type
Code to detect what juno revision we are running on.
Convert ArmJunoDxe to use common juno revision code
Jeremy Linton (3):
Platforms/ARM/Juno: Create SMBIOS/DMI data for Juno
Platforms/ARM/Juno: Add the module build information
Platforms/ARM/Juno: Add the SMBIOS/DMI module to the Juno Platform
ArmPkg/Include/Chipset/AArch64.h | 1 +
.../ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c | 62 +++++++---------------
ArmPlatformPkg/ArmJunoPkg/Include/ArmPlatform.h | 30 ++++++++++-
3 files changed, 48 insertions(+), 45 deletions(-)
Platforms/ARM/Juno/ArmJuno.dsc | 12 +
Platforms/ARM/Juno/ArmJuno.fdf | 6 +
.../ARM/Juno/SmbiosPlatformDxe/SmbiosPlatformDxe.c | 864 +++++++++++++++++++++
.../Juno/SmbiosPlatformDxe/SmbiosPlatformDxe.inf | 68 ++
4 files changed, 950 insertions(+)
create mode 100644 Platforms/ARM/Juno/SmbiosPlatformDxe/SmbiosPlatformDxe.c
create mode 100644 Platforms/ARM/Juno/SmbiosPlatformDxe/SmbiosPlatformDxe.inf
--
2.5.5
OK,
You are also right that
GCC:*_*_ARM_PLATFORM_FLAGS = -march=armv8-a
should be used (this was my original modification, which was changed later).
Alexei.
-----Original Message-----
From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org]
Sent: 27 July 2016 17:27
To: Alexei Fedorov
Subject: Re: [Linaro-uefi] [PATCH] Platforms/ARM/Juno: Add GCC ARMv8 target architecture flag
On 27 July 2016 at 17:58, Alexei Fedorov <Alexei.Fedorov(a)arm.com> wrote:
> See below:
>
> "C:\Linaro_GCC\bin\arm-none-eabi-gcc" -mthumb
> -Iq:\edk2/ArmPlatformPkg/ArmVExpressPkg/Include
> -Iq:\edk2/ArmPlatformPkg/ArmJunoPkg/Include -g -fshort-wchar
> -fno-strict-aliasing -Wall -Werror -Wno-array-bounds
> -ffunction-sections -fdata-sections -c -include AutoGen.h -fno-common
> -DSTRING_ARRAY_NAME=BaseMemoryLibStmStrings -g -Os -fshort-wchar
> -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include
> AutoGen.h -fno-common -mlittle-endian -mabi=aapcs -fno-short-enums
> -save-temps -funsigned-char -ffunction-sections -fdata-sections
> -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft
> -fstack-protector -mword-relocations -mno-unaligned-access -O0 -o
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\BaseMemoryLibStm\
> BaseMemoryLibStm\OUTPUT\.\SetMem64Wrapper.obj -Iq:\edk2\ArmPkg\Lib
> rary\BaseMemoryLibStm\Arm -Iq:\edk2\ArmPkg\Library\BaseMemoryLibStm
> -Iq:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\BaseMemoryLibSt
> m\BaseMemoryLibStm\DEBUG -Iq:\edk2\MdePkg -Iq:\edk2\MdePkg\Include
> -Iq:\edk2\MdePkg\Include\Arm -Iq:\edk2\ArmPkg -Iq:\edk2\ArmPkg\Include
> q:\edk2\ArmPkg\Library\BaseMemoryLibStm\SetMem64Wrapper.c
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii: Assembler messages:
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:21: Error: attempt to use an ARM instruction on a Thumb-only processor -- `push {r4-r8}'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:23: Error: attempt to use an ARM instruction on a Thumb-only processor -- `push {r0}'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:26: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r7,[r0,#28]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:27: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r6,[r0,#24]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:28: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r5,[r0,#20]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:29: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r4,[r0,#16]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:30: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r3,[r0,#12]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:31: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r2,[r0,#8]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:32: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r1,[r0,#4]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:33: Error: attempt to use an ARM instruction on a Thumb-only processor -- `ldr r0,[r0,#0]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:35: Error: attempt to use an ARM instruction on a Thumb-only processor -- `smc #0'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:38: Error: attempt to use an ARM instruction on a Thumb-only processor -- `pop {r8}'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:42: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r3,[r8,#12]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:43: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r2,[r8,#8]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:44: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r1,[r8,#4]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:45: Error: attempt to use an ARM instruction on a Thumb-only processor -- `str r0,[r8,#0]'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:47: Error: attempt to use an ARM instruction on a Thumb-only processor -- `mov r0,r8'
> Mqakefile:290: recipe for target
> 'q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmc
> Lib\OUTPUT\Arm\ArmSmc.obj' failed
> :\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:50: Error: attempt to use an ARM instruction on a Thumb-only processor -- `pop {r4-r8}'
> q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmcLib\OUTPUT\Arm\ArmSmc.iii:52: Error: attempt to use an ARM instruction on a Thumb-only processor -- `bx lr'
> make: ***
> [q:\edk2\Build\ArmJuno\DEBUG_GCC49\ARM\ArmPkg\Library\ArmSmcLib\ArmSmc
> Lib\OUTPUT\Arm\ArmSmc.obj] Error 1
>
> This error is reported by:
> arm-none-eabi-gcc.exe (GNU Tools for ARM Embedded Processors) 4.9.3
> 20141119 (release) [ARM/embedded-4_9-branch revision 218278
>
> but doesn't occur with:
> arm-eabi-gcc.exe (Linaro GCC 4.9-2015.05) 4.9.3 20150413 (prerelease)
>
> , so looks like GCC internal issue.
>
These GCCs are simply built for different default targets.
So adding -march=armv8-a to ARM's platform flags is fine by me
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
From: Alexei <Alexei.Fedorov(a)arm.com>
This commit adds the GCC compiler "-march=armv8-a" flag
for the Juno platform with ARMv8 CPU.
This compilation flag also fixes assembler errors like
Error: attempt to use an ARM instruction on a Thumb-only processor
-- `push {r4-r8}'
which are reported by GCC compilers prior to
Linaro GCC 4.9-2015.05 4.9.3 20150413 (i.e. 4.9.3 20141119).
Code is available at:
https://github.com/EvanLloyd/OpenPlatformPkg/tree/JunoBuild_v1
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Alexei Fedorov <alexei.fedorov(a)arm.com>
Signed-off-by: Evan Lloyd <evan.lloyd(a)arm.com>
---
Platforms/ARM/Juno/ArmJuno.dsc | 1 +
1 file changed, 1 insertion(+)
diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index 4f41fb159f193b3593048ce118fd0e8e97843809..87b8d517f292e81297dcf6577e5376fd7a3c8569 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -75,6 +75,7 @@ [LibraryClasses.common.UEFI_DRIVER, LibraryClasses.common.UEFI_APPLICATION, Libr
[BuildOptions]
*_*_*_PLATFORM_FLAGS == -I$(WORKSPACE)/ArmPlatformPkg/ArmVExpressPkg/Include -I$(WORKSPACE)/ArmPlatformPkg/ArmJunoPkg/Include
+ *_*_*_PLATFORM_FLAGS = -march=armv8-a
################################################################################
#
--
Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")
From: Fu Wei <fu.wei(a)linaro.org>
This patchset add xen_boot support into grup-mkconfig for
generating xen boot entrances automatically
Also update the docs/grub.texi for new xen_boot commands.
This patchset has been tested on Foudation model with a bug fix:
http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00205.html
ChangeLog:
v5: Update the introduction of xen_module commands in docs/grub.texi,
according to the suggestion from Julien Grall
v4: http://lists.gnu.org/archive/html/grub-devel/2016-05/
according to the XSM loading mechanism of Xen(upstreamed),
update the introduction of xen_module commands in docs/grub.texi
v3: http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00314.html
reorder the patches
update the introduction of xen_module commands in docs/grub.texi
v2: http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00282.html
add "--nounzip" option support in xen_module
use "feature_xen_boot" instead of "grub_xen_boot"
update the introduction of xen boot commands in docs/grub.texi
v1 :first upstream patchset:
http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00264.html
Fu Wei (4):
i386,xen: Add xen_hypervisor and xen_module aliases for i386
arm64: add "--nounzip" option support in xen_module command
* util/grub.d/20_linux_xen.in: Add xen_boot command support
arm64: update the introduction of xen boot commands in docs/grub.texi
docs/grub.texi | 32 +++++++++-----------------------
grub-core/loader/arm64/xen_boot.c | 17 +++++++++++++++++
grub-core/loader/i386/xen.c | 7 +++++++
grub-core/normal/main.c | 2 +-
util/grub.d/20_linux_xen.in | 13 ++++++++++---
5 files changed, 44 insertions(+), 27 deletions(-)
--
2.5.5
Hi,
I have been working on PCI controller driver performance (Root Bridge) for my ARMv8 platform. I had integrated my PciHostBridgeDxe code with MdeModulePkg/Bus/Pci/PciBusDxe. Have followed PCI Host bridge resource allocation and Root bridge IO protocol, as used in some other existing PCI root bridge driver.
My concern here is that:
Tftp using PCI interface is painfully slow. It takes around 10 mins to transfer a 30MB file over PCI NIC card using Tftp
Has anyone observed the slowness in network transfer using PCI interface?
I couldn't figure out any bottlenecks in PCI root bridge driver( it uses ArmDmaLib for Allocate, Free, Map and UnMap) nor does PCIBUS driver seems to have.
Can the slowness be Network stack (like SNP, MNP and other protocols) or E1000 driver code or TFTP command code?
Any pointer for the same would be really helpful!!
Thanks in advance for your time!
Best regards,
Shaveta
Hi all,
Just thought I should give a heads up that both myself and Ard will be
unavailable next week. I will be back on the 25 July, and Ard a week
after that.
Apologies for any inconvenience.
Regards,
Leif