[Buildroot] [PATCH v5] board: add support for Synopsys VDK Software Development Platform

Joao Pinto Joao.Pinto at synopsys.com
Thu Oct 22 09:21:25 UTC 2015


Hi Arnout,

On 10/20/2015 10:45 PM, Arnout Vandecappelle wrote:
> On 13-10-15 12:10, Joao Pinto wrote:
>> title: Add support for Synopsys VDK Software Development Platform
> 
>  No need to repeat what is already in the subject.
> 
>>
>> The Virtualizer Development Kit (VDK) Family for ARM Cortex Products
>> consists of a set of virtual prototypes that provide a virtualizer for 
>> the ARM core variants. The VDK is a standalone package that runs on an 
>> host computer.
> 
>  I guess it's non-free as well?

You're right, VDK is a Synopsys non-free tool.

> 
>>
>> Signed-off-by: Joao Pinto <jpinto at synopsys.com>
>> ---
>> Change v4 -> v5:
>>  - Changelog format, minimal defconfig (Yann E. MORIN)
>> Change v3 -> v4:
>>  - drop 'Image' boot option (Thomas Petazzoni)
>> Change v2 -> v3:
>>  - kernel defconfig was not generated properly (Thomas Petazzoni)
>>
>>  board/synopsys/vdk/linux-vdk-aarch64-defconfig | 226 +++++++++++++++++++++++++
>>  configs/snps_aarch64_vdk_defconfig             |  15 ++
>>  2 files changed, 241 insertions(+)
>>  create mode 100644 board/synopsys/vdk/linux-vdk-aarch64-defconfig
>>  create mode 100644 configs/snps_aarch64_vdk_defconfig
>>
>> diff --git a/board/synopsys/vdk/linux-vdk-aarch64-defconfig b/board/synopsys/vdk/linux-vdk-aarch64-defconfig
>> new file mode 100644
>> index 0000000..f90f2ca
>> --- /dev/null
>> +++ b/board/synopsys/vdk/linux-vdk-aarch64-defconfig
>> @@ -0,0 +1,175 @@
>> +CONFIG_SYSVIPC=y
>> +CONFIG_POSIX_MQUEUE=y
>> +CONFIG_NO_HZ=y
>> +CONFIG_HIGH_RES_TIMERS=y
>> +CONFIG_BSD_PROCESS_ACCT=y
>> +CONFIG_IKCONFIG=y
>> +CONFIG_IKCONFIG_PROC=y
>> +CONFIG_LOG_BUF_SHIFT=16
>> +CONFIG_CGROUPS=y
>> +CONFIG_BLK_DEV_INITRD=y
>> +CONFIG_EMBEDDED=y
>> +CONFIG_SLAB=y
>> +CONFIG_PROFILING=y
>> +CONFIG_CC_STACKPROTECTOR_REGULAR=y
>> +CONFIG_MODULES=y
>> +CONFIG_MODULE_UNLOAD=y
>> +CONFIG_SMP=y
>> +CONFIG_SCHED_MC=y
>> +CONFIG_SCHED_SMT=y
>> +CONFIG_NR_CPUS=8
>> +CONFIG_PREEMPT=y
>> +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
>> +CONFIG_TRANSPARENT_HUGEPAGE=y
>> +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
>> +CONFIG_CMDLINE="console=ttyAMA0 earlyprintk=pl011,0x1c090000 debug user_debug=31 loglevel=9 root=/dev/vda"
>> +CONFIG_CMDLINE_FORCE=y
> 
>  Is this really needed? Well, VDK probably doesn't allow passing a command line
> anyway...

For the VDK environment we have two ways, this one or to set the bootargs in the
device tree, but in my opinion this option is more clean.

> 
> 
>> +CONFIG_BINFMT_MISC=y
>> +CONFIG_CPU_IDLE=y
>> +CONFIG_CPU_FREQ=y
>> +CONFIG_CPU_FREQ_GOV_USERSPACE=y
>> +CONFIG_CPU_FREQ_GOV_ONDEMAND=y
> 
>  Does VDK support frequency scaling?

VDK is an emulation of an ARMv8, so we try to include as features as possible.
So I would recommend to keep this options.

> 
>> +CONFIG_ARM_BIG_LITTLE_CPUFREQ=y
> 
>  Does VDK support big.LITTLE?

Same as before.

> 
>> +CONFIG_ARM_DT_BL_CPUFREQ=y
>> +CONFIG_ARM_SPCI_CPUFREQ=y
>> +CONFIG_NET=y
>> +CONFIG_PACKET=y
>> +CONFIG_UNIX=y
>> +CONFIG_XFRM_USER=y
> 
>  Is this needed?
> 
>> +CONFIG_NET_KEY=y
>> +CONFIG_NET_KEY_MIGRATE=y
>> +CONFIG_INET=y
>> +CONFIG_IP_MULTICAST=y
>> +CONFIG_IP_PNP=y
>> +CONFIG_IP_PNP_DHCP=y
>> +CONFIG_IP_PNP_BOOTP=y
>> +CONFIG_IP_PNP_RARP=y
>> +CONFIG_SYN_COOKIES=y
>> +CONFIG_NETWORK_PHY_TIMESTAMPING=y
>> +CONFIG_NET_9P=y
> 
>  Is Plan9 useful in a simulator?

This one can be removed.

> 
>> +CONFIG_NET_9P_VIRTIO=y
>> +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
>> +CONFIG_DEVTMPFS=y
>> +CONFIG_DEVTMPFS_MOUNT=y
>> +CONFIG_VEXPRESS_CONFIG=y
> 
>  Does VDK use VExpress?

Synopsys VDK runs a foundation model of ARMv8 and according to the tool' team,
the "Versatile Express" should be activated.

> 
>> +CONFIG_CONNECTOR=y
>> +CONFIG_MTD=y
>> +CONFIG_MTD_CMDLINE_PARTS=y
>> +CONFIG_MTD_BLOCK=y
>> +CONFIG_MTD_OOPS=y
>> +CONFIG_MTD_CFI=y
>> +CONFIG_MTD_CFI_INTELEXT=y
>> +CONFIG_MTD_SLRAM=y
> 
>  Does VDK support all of that?

Yes, the MTD package can be removed.

> 
>> +CONFIG_MTD_NAND=y
>> +CONFIG_OF_SELFTEST=y
>> +CONFIG_BLK_DEV_LOOP=y
>> +CONFIG_BLK_DEV_NBD=m
>> +CONFIG_BLK_DEV_RAM=y
>> +CONFIG_BLK_DEV_RAM_SIZE=65536
> 
>  Are these three needed?

The MTD module, as previously stated, can be removed.
I think CONFIG_BLK_DEV_NBD, CONFIG_OF_SELFTEST can be removed.
The CONFIG_BLK_DEV_* are useful when VDK is used as part of the Synopsys Hybrid
Prototyping Kits.

> 
>> +CONFIG_VIRTIO_BLK=y
>> +CONFIG_SCSI=y
>> +CONFIG_BLK_DEV_SD=y
>> +CONFIG_BLK_DEV_DM=y
>> +CONFIG_NETDEVICES=y
>> +CONFIG_SMC91X=y
>> +CONFIG_SMSC911X=y
>> +CONFIG_STMMAC_ETH=m
> 
>  Does VDK support all of these?

I think CONFIG_SMC91X and CONFIG_SMSC911X can be removed.

> 
>> +CONFIG_STMMAC_DEBUG_FS=y
> 
>  Is this needed?
> 

I think CONFIG_STMMAC_DEBUG_FS can be removed.

>> +CONFIG_INPUT_EVDEV=y
>> +CONFIG_INPUT_MISC=y
>> +CONFIG_INPUT_UINPUT=y
>> +CONFIG_SERIO_AMBAKMI=y
>> +CONFIG_SERIAL_8250=y
>> +CONFIG_SERIAL_8250_CONSOLE=y
>> +CONFIG_SERIAL_AMBA_PL011=y
>> +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
>> +CONFIG_SERIAL_OF_PLATFORM=y
> 
>  Err, I thought OpenFirmware was a PowerPC thing?
> 
>> +CONFIG_VIRTIO_CONSOLE=y
>> +CONFIG_I2C=y
>> +CONFIG_I2C_CHARDEV=y
>> +CONFIG_I2C_DESIGNWARE_PLATFORM=y
>> +CONFIG_GPIOLIB=y
>> +CONFIG_GPIO_SYSFS=y
>> +CONFIG_POWER_RESET_VEXPRESS=y
>> +CONFIG_FB=y
>> +CONFIG_FB_ARMCLCD=y
>> +CONFIG_FRAMEBUFFER_CONSOLE=y
>> +CONFIG_LOGO=y
>> +CONFIG_USB_HIDDEV=y
>> +CONFIG_USB=y
>> +CONFIG_USB_EHCI_HCD=y
>> +CONFIG_USB_EHCI_HCD_SYNOPSYS=y
>> +CONFIG_USB_OHCI_HCD=y
>> +CONFIG_NOP_USB_XCEIV=y
>> +CONFIG_USB_ULPI=y
>> +CONFIG_USB_DUMMY_HCD=m
>> +CONFIG_USB_G_SERIAL=m
>> +CONFIG_MMC=y
>> +CONFIG_MMC_ARMMMCI=y
>> +CONFIG_NEW_LEDS=y
>> +CONFIG_LEDS_CLASS=y
>> +CONFIG_LEDS_GPIO=y
>> +CONFIG_LEDS_TRIGGERS=y
>> +CONFIG_LEDS_TRIGGER_TIMER=y
>> +CONFIG_LEDS_TRIGGER_ONESHOT=y
>> +CONFIG_LEDS_TRIGGER_HEARTBEAT=y
>> +CONFIG_LEDS_TRIGGER_BACKLIGHT=y
>> +CONFIG_LEDS_TRIGGER_CPU=y
>> +CONFIG_LEDS_TRIGGER_GPIO=y
>> +CONFIG_SWITCH=y
>> +CONFIG_RTC_CLASS=y
>> +CONFIG_RTC_DRV_PL031=y
>> +CONFIG_VIRTIO_BALLOON=y
>> +CONFIG_VIRTIO_MMIO=y
>> +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
>> +CONFIG_COMMON_CLK_VERSATILE=y
>> +CONFIG_CLK_SP810=y
>> +CONFIG_CLK_VEXPRESS_OSC=y
>> +CONFIG_COMMON_CLK_SCPI=y
>> +CONFIG_MAILBOX=y
>> +CONFIG_ARM_SCPI_PROTOCOL=y
>> +CONFIG_EXT4_FS=y
>> +CONFIG_EXT4_FS_SECURITY=y
>> +CONFIG_BTRFS_FS=y
> 
>  I don't think btrfs is needed. Perhaps as a module. Same for the other fses.

Yep, we can put them as modules.

> 
>> +CONFIG_QUOTA=y
>> +CONFIG_QFMT_V2=y
>> +CONFIG_AUTOFS4_FS=y
>> +CONFIG_MSDOS_FS=y
>> +CONFIG_VFAT_FS=y
>> +CONFIG_TMPFS=y
>> +CONFIG_TMPFS_POSIX_ACL=y
>> +CONFIG_HUGETLBFS=y
>> +CONFIG_ECRYPT_FS=y
>> +CONFIG_JFFS2_FS=y
>> +CONFIG_JFFS2_SUMMARY=y
>> +CONFIG_JFFS2_FS_XATTR=y
>> +CONFIG_JFFS2_COMPRESSION_OPTIONS=y
>> +CONFIG_JFFS2_LZO=y
>> +CONFIG_JFFS2_RUBIN=y
>> +CONFIG_CRAMFS=y
>> +CONFIG_9P_FS=y
>> +CONFIG_NLS_CODEPAGE_437=y
>> +CONFIG_NLS_ISO8859_1=y
>> +CONFIG_VIRTUALIZATION=y
>> +CONFIG_KVM=y
>> +CONFIG_DYNAMIC_DEBUG=y
>> +CONFIG_DEBUG_INFO=y
>> +CONFIG_MAGIC_SYSRQ=y
>> +CONFIG_SCHEDSTATS=y
>> +CONFIG_TIMER_STATS=y
>> +CONFIG_FUNCTION_TRACER=y
>> +CONFIG_STRICT_DEVMEM=y
>> +CONFIG_SECURITY=y
>> +CONFIG_SECURITY_NETWORK_XFRM=y
>> +CONFIG_LSM_MMAP_MIN_ADDR=0
>> +CONFIG_SECURITY_SELINUX=y
>> +CONFIG_SECURITY_SELINUX_BOOTPARAM=y
>> +CONFIG_SECURITY_SELINUX_DISABLE=y
>> +CONFIG_SECURITY_SMACK=y
>> +CONFIG_SECURITY_APPARMOR=y
>> +CONFIG_DEFAULT_SECURITY_APPARMOR=y
> 
>  We don't enable any security option in all the other kernel configs...

This is not a critical issue, we can remove the security packages.

> 
>> +CONFIG_CRYPTO_MICHAEL_MIC=y
>> +CONFIG_CRC_CCITT=y
>> +CONFIG_CRC_T10DIF=y
>> +CONFIG_CRC_ITU_T=y
>> +CONFIG_CRC7=y
> 
>  All of these definitely have no business in a defconfig.

You're right is can be removed.

> 
>> diff --git a/configs/snps_aarch64_vdk_defconfig b/configs/snps_aarch64_vdk_defconfig
>> new file mode 100644
>> index 0000000..a79b1d2
>> --- /dev/null
>> +++ b/configs/snps_aarch64_vdk_defconfig
>> @@ -0,0 +1,14 @@
>> +BR2_aarch64=y
>> +BR2_KERNEL_HEADERS_3_18=y
>> +BR2_TARGET_GENERIC_HOSTNAME="vdk-buildroot"
>> +BR2_TARGET_GENERIC_ISSUE="Welcome to SNPS VDK by Buildroot"
>> +BR2_LINUX_KERNEL=y
>> +BR2_LINUX_KERNEL_CUSTOM_GIT=y
>> +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://git.linaro.org/kernel/linux-linaro-tracking.git"
>> +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux-linaro-3.18-2014.12"
>> +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
>> +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/synopsys/vdk/linux-vdk-aarch64-defconfig"
>> +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
>> +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image"
>> +BR2_TARGET_ROOTFS_EXT2=y
> 
>  Perhaps also select EXT2_4.
> 
> 
>  It would also be good to add a readme file that explains how to start the
> simulator. Like board/qemu/arm-vexpress/readme.txt

Sure, I will include one.

> 
> 
>  Regards,
>  Arnout
> 
>> +# BR2_TARGET_ROOTFS_TAR is not set
>>
> 
> 

Based on your comments I will make a new patch to support VDK.

Thanks,

-Joao




More information about the buildroot mailing list