Linux for
DesignWare®
ARC®
Kernel / BusyBox / RAM Disk
Release Notes 1.4
Version 5976-012 September 2011
Linux for DesignWare ARC Release Notes 1.4
Synopsys, Inc.
Copyright Notice and Proprietary Information
Copyright © 2011 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and
proprietary information that is the property of Synopsys, Inc. The software and documentation are furnished
under a license agreement and may be used or copied only in accordance with the terms of the license
agreement. No part of the software and documentation may be reproduced, transmitted, or translated, in any
form or by any means, electronic, mechanical, manual, optical, or otherwise, without prior written permission of
Synopsys, Inc., or as expressly provided by the license agreement.
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of
America. Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s
responsibility to determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Registered Trademarks (®)
Synopsys, AEON, AMPS, Astro, Behavior Extracting Synthesis Technology, Cadabra, CATS, Certify, CHIPit,
CoMET, Confirma, CODE V, Design Compiler, DesignWare, EMBED-IT!, Formality, Galaxy Custom Designer,
Global Synthesis, HAPS, HapsTrak, HDL Analyst, HSIM, HSPICE, Identify, Leda, LightTools, MAST, METeor,
ModelTools, NanoSim, NOVeA, OpenVera, ORA, PathMill, Physical Compiler, PrimeTime, SCOPE, Simply
Better Results, SiVL, SNUG, SolvNet, Sonic Focus, STAR Memory System, Syndicated, Synplicity, the
Synplicity logo, Synplify, Synplify Pro, Synthesis Constraints Optimization Environment, TetraMAX, UMRBus,
VCS, Vera, and YIELDirector are registered trademarks of Synopsys, Inc.
Trademarks (™)
AFGen, Apollo, ARC, ASAP, Astro-Rail, Astro-Xtalk, Aurora, AvanWaves, BEST, Columbia, Columbia-CE,
Cosmos, CosmosLE, CosmosScope, CRITIC, CustomExplorer, CustomSim, DC Expert, DC Professional, DC
Ultra, Design Analyzer, Design Vision, DesignerHDL, DesignPower, DFTMAX, Direct Silicon Access, Discovery,
Eclypse, Encore, EPIC, Galaxy, HANEX, HDL Compiler, Hercules, Hierarchical Optimization Technology, High-
performance ASIC Prototyping System, HSIMplus, i-Virtual Stepper, IICE, in-Sync, iN-Tandem, Intelli, Jupiter,
Jupiter-DP, JupiterXT, JupiterXT-ASIC, Liberty, Libra-Passport, Library Compiler, Macro-PLUS, Magellan, Mars,
Mars-Rail, Mars-Xtalk, Milkyway, ModelSource, Module Compiler, MultiPoint, ORAengineering, Physical Analyst,
Planet, Planet-PL, Polaris, Power Compiler, Raphael, RippledMixer, Saturn, Scirocco, Scirocco-i, SiWare, Star-
RCXT, Star-SimXT, StarRC, System Compiler, System Designer, Taurus, TotalRecall, TSUPREM-4, VCSi,
VHDL Compiler, VMC, and Worksheet Buffer are trademarks of Synopsys, Inc.
Service Marks (sm) MAP-in, SVP Café, and TAP-in are service marks of Synopsys, Inc.
SystemC is a trademark of the Open SystemC Initiative and is used under license.
ARM and AMBA are registered trademarks of ARM Limited.
Saber is a registered trademark of SabreMark Limited Partnership and is used under license.
PCI Express is a trademark of PCI-SIG.
All other product or company names may be trademarks of their respective owners.
Synopsys, Inc.
700 E. Middlefield Road
Mountain View, CA 94043
www.synopsys.com
i Synopsys, Inc. September 2011
Contents
Customer Support ...................................................................................................... 1
Accessing SolvNet ................................................................................................. 1
Contacting the Synopsys Technical Support Center .............................................. 1
1 Introduction .............................................................................................................. 2
Typographical Conventions .................................................................................... 2
Module Version Numbers ....................................................................................... 2
Features ................................................................................................................. 2
Deliverables List ..................................................................................................... 3
Documents ............................................................................................................. 4
2 Release Change Information ................................................................................... 5
ARC Linux Release 1.4 .......................................................................................... 5
Hardware Support: Updated ARC700 core (Rel. 4.10) ....................................... 5
Features .............................................................................................................. 6
Debugging ........................................................................................................... 6
Optimizations ...................................................................................................... 6
Robustness ......................................................................................................... 7
Enhancements .................................................................................................... 7
Fixed Issues ........................................................................................................ 7
ARC Linux Release 1.3 .......................................................................................... 9
Hardware Support: New Features and Changes................................................. 9
Features ............................................................................................................ 10
Kernel Debugging ............................................................................................. 10
Optimizations .................................................................................................... 10
Robustness ....................................................................................................... 11
ARC Linux Release 1.2 ........................................................................................ 11
ARC Linux Release 1.1 ........................................................................................ 12
ARC Linux Release 1.0 ........................................................................................ 13
3 Known Issues ........................................................................................................ 15
September 2011 Synopsys, Inc. ii
Customer Support
Customer support is available through SolvNet online customer support and through
contacting the Synopsys Technical Support Center.
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and answers to
frequently asked questions about Synopsys tools. SolvNet also gives you access to
a wide range of Synopsys online services, which include downloading software,
viewing Documentation on the Web, and entering a call to the Support Center.
To access SolvNet:
1. Go to the SolvNet Web page at http://solvnet.synopsys.com/.
2. If prompted, enter your user name and password. (If you do not have a
Synopsys user name and password, follow the instructions to register
with SolvNet.)
If you need help using SolvNet, click SolvNet Help in the Support Resources section.
Contacting the Synopsys Technical Support Center
If you have problems, questions, or suggestions, you can contact the Synopsys
Technical Support Center in the following ways:
Open a call to your local support center from the Web by going to
http://solvnet.synopsys.com/ (Synopsys user name and password
required), then clicking “Enter a Call to the Support Center.”
Send an e-mail message to your local support center.
o E-mail support_center@synopsys.com from within North America.
o Find other local support center e-mail addresses at
http://www.synopsys.com/support/support_ctr.
Telephone your local support center.
o Call (800) 245-8005 from within the continental United States.
o Call (650) 584-4200 from Canada.
o Find other local support center telephone numbers at
http://www.synopsys.com/support/support_ctr.
1 Synopsys, Inc. September 2011
1
Introduction
Welcome to ARC Linux. ARC Linux is a port of the Linux kernel to the
ARC 750 CPU.
Typographical Conventions
This document uses the following typographical conventions:
Convention Meaning Examples
bold Functions get_callback()
predefined classes the simple_initiator_socket
values to be entered class
literally template<int init, int
GUI elements target>
Select Save All.
italics text to be replaced with InstallationDir
your own values sc_time p //period
monospace code in general ls.push_back("SHMEM");
Module Version Numbers
ARC Linux consists of the following module version numbers:
Linux kernel 2.6.35.12
ARC InitRAMfs 1.4
U-Boot 2009.06
Features
The ARC Linux product consists of the following features:
September 2011 Synopsys, Inc. 2
Deliverables List Linux for DesignWare® ARC®
Support for MMU for fully protected individual memory spaces
Support for ARC peripherals
o Serial, Ethernet, timers, PCI, PGU, AC'97, IDE
Support for various kernel-scheduling modes:
o Preemptive
o Voluntary pre-emption
o No forced pre-emption)
Loadable kernel modules
High-resolution timers
Tickless idle
Real-time signal support
Two levels of interrupt support
Standard Linux IPv4 or IPv6 networking, NAPI support
Standard Linux filesystem support (XFS, JFS, EXT2, etc.)
BusyBox compact root filesystem
o Common Linux utilities (ls, cp, mount, etc.)
Easy-to-populate RAM disk
Optimizations specific to ARC for high performance
o Dedicated current_task register
o Optimized copy_page(), memcpy(), memzero(), copy_to_user(),
etc.
Optimizations for higher-latency memory subsystems
U-Boot command-line passing
o Ethernet boot, disk boot
Deliverables List
Product Components Description
ARC Linux ARC Linux The Linux kernel source code.
(http://www.kernel.org)
ARC InitRAMfs An easy-to-configure container for a Linux
initial RAM disk
3 Synopsys, Inc. September 2011
Linux for DesignWare® ARC® Documents
U-Boot Denx Universal Boot Loader.
Documents
The ARC Linux product is supplied with all the standard Linux and
BusyBox documentation in their customary locations.
A file is provided in each component to describe how to build
the component.
September 2011 Synopsys, Inc. 4
2
Release Change Information
This chapter describes the major changes from previous releases of ARC
Linux.
ARC Linux Release 1.4
The following top-level components are included in this release:
Linux 2.6.35.12
Custom initramfs with pre-built ARC GNU libraries, BusyBox, strace
U-Boot 2009.06
Note
BusyBox sources are no longer part of the release. Any recent upstream
BusyBox version is expected to work with this kernel and toolchain
combination (see the Getting Started guide for more details). The initramfs
does have a verified, pre-built BusyBox 1.18.4.
The newly supported features in the Linux kernel are described in the
following subsections.
Hardware Support: Updated ARC700 core (Rel. 4.10)
Support for ISA enhancements: CONFIG_ARCH_HAS_LLSC for atomic
read-modify-write LLOCK/SCOND instruction; CONFIG_ARCH_HAS_SWAPE
for single-cycle endian swap instruction
CONFIG_ARC_MMU_V3: Support for Bigger J-TLB (128 x 4) and new
CDU programming model
Support for variable MMU page sizes: CONFIG_ARC_PAGE_SIZE_4K,
CONFIG_ARC_PAGE_SIZE_8k, CONFIG_ARC_PAGE_SIZE_16k
Note
The default page size is 8 K. A system with different page size not only
requires a kernel rebuild but also uClibc, the system shared libraries (libc, libm,
etc.) and also user applications: BusyBox. For details, see the file
arch/arc/Documentation/arc-enabling-non-default-mmu-
page-sz.txt in your release.
In addition, due to a possible software cache-aliasing issue, Linux cannot be
5 Synopsys, Inc. September 2011
Linux for DesignWare® ARC® ARC Linux Release 1.4
run on a 4-K page configuration with Caches greater than 16 K.
Support for a patent-pending MMU enhancement for optimized shared
libraries: CONFIG_ARC_MMU_SASID
Support for variable cache-line size (32, 64, or 128 bytes). This is not a
configuration option—select it by changing a single dial
L1_CACHE_SHIFT in kernel header
arch/arc/include/asm/cache.h
Features
CONFIG_ARCH_ARC_FPU for supporting floating point in the user space
by saving FPU registers across context switches
CONFIG_ARC_MISAILGNED_ACCESS to support emulation of unaligned
memory access (user space only) for ease of application porting
Correct restarting of timer related system calls: Supporting internal flag
ERESTART_RESTARTBLOCK
CONFIG_FUTEX to support futex for fast user-space synchronization
primitives.
Debugging
CONFIG_KPROBES to dynamically debug/instrument kernel without
recompile or reboot
Ported upstream strace to assist user programs in debugging (tracing
system calls)
Dmalloc library support
Optimizations
Optimized Cache Flush API called by core kernel. Multiple full-cache
flush/invalidates on fork/execve/exit are now removed.
Major improvements of fork/execve timings due to shared address
space ID feature of the ARC 700 4.10 MMU
Optimized string and memory routines: memcmp(), strchr(), strcpy(),
strcmp(), strlen()
Page-table traversal split changed from 8:11:13 to 11:8:13
Kernel built without -mlong-calls, reducing the generated code size in
binary by approximately 10%
optimised ffs( ), fls( ), ffz( ), local_irq_save( )
September 2011 Synopsys, Inc. 6
ARC Linux Release 1.4 Linux for DesignWare® ARC®
Robustness
Bug fixes: See Fixed Issues for details.
More robust early printk() support - detecting and reporting a lot more
mismatches between hardware (which is much more configurable now)
and software (kernel)
Completely rewritten UART driver fixes numerous user-space TTY-
related bugs.
Single toggle CONFIG_LINUX_LINK_BASE to enable Linux linkage at
non-default 0x8000_0000
Note
This release of ARC Linux requires the ARC GNU v2.4 Toolchain. If you are
upgrading to ARC Linux v1.4, you must also upgrade the ARC GNU Toolchain
to v2.4.
Enhancements
9000469866 Add username/password options to mount
9000470323 Add ML50x ARC 700 support to U-Boot Boot Loader
ARS0090743 Add efficient find_first_bit and find_next_bit
macros in ARC Linux
ARS0092109 Serial-driver cleanup
ARS0096414 Make a simulator-friendly version of BusyBox config
ARS0097746 make memcmp(), memcpy() faster in ARC Linux kernel
ARS0098477 STrace port for ARC Linux
ARS0099483 Add software patch to support unaligned memory access
ARS0099531 Add documentation on NFS cross-development
ARS0102482 Add ARC Linux/uClibc support for mmap() with 4 k size
Fixed Issues
9000464222 CONFIG_EARLY_PRINTK non-functional
9000470340 FUSE configuration failed
9000471224 LTP tripping a BUG_ON in kernel in cmn-vaddr-alloc
subsystem
9000471721 gcc-hostlink for MetaWare build failed on Linux
7 Synopsys, Inc. September 2011
Linux for DesignWare® ARC® ARC Linux Release 1.4
9000473698 Make Qt demos work with 2.6.35 kernel and ARC 700
4.10
9000473699 Duplicate Pd issue (was: IDE disk won't work on 2.6.35
kernel with 4-K page size)
9000473700 userland built for 16-K pgsz not coming up in 2.6.35
kernel with 16-K pgsz
9000473994 LMbench crashes with 4.10 64-byte line length
9000477999 Linux kernel gets wrong IP from DHCP when configured
with NFS as root file system
9000485549 pthread_create() call causes segmentation fault
9000488757 Linux 1.4 build breakage when built with caches disabled
(RC1)
9000491107 CONFIG_SWAP broken in Linux pre-1,4, 1.3, 1.2
ARS0095396 Setting baud rate of ARC UART from user space using
tcsetattr doesn't work
ARS0096195 ifconfig up - down - up causes error
ARS0098447 Occasional Kernel panic in gdb debug (v2.6.26)
ARS0098807 TFTP download is failing sometimes
ARS0098822 Merge changes from U-Boot branch
ml50x_arc600_bootrom into trunk
ARS0098885 I_CACHE_BUILD register changed in the hardware
ARS0098956 OProfile doesn't work with Linux 1.3 release kernel (patch
needed)
ARS0099056 BusyBox top seems to be occasionally stuck in a loop
ARS0099181 Unable to load application with U-Boot
ARS0099193 Disable EMAC LV2 if timer is not configured on LV2
ARS0099511 Peripheral base in /proc/cpuinfo is incorrect
ARS0099524 Reboot has some issues
ARS0099527 Getting Started needs minor edits
ARS0099649 stty returns 9600 even though baud is actually 57600
ARS0099658 /etc/hosts in ramfs contains incorrect information
ARS0099767 ifconfig command results in get stats called
message on console
ARS0099784 Linux 2.6.30 and 128-byte cache-line length
September 2011 Synopsys, Inc. 8
ARC Linux Release 1.3 Linux for DesignWare® ARC®
ARS0099796 ENET simulation configuration option unclear
ARS0100000 Document memory map restrictions for kernel
ARS0100013 No Documentation/arc in ARC Linux distro
ARS0100027 Default configuration for ISS should point to MMU v2
ARS0100264 New UART driver hangs in ISS
ARS0100656 arch/arc/kernel/arcksyms.c could add __divsf3
and __floatunsisf
ARS0101127 ARC Linux build failure with CONFIG_IP_MULTICAST
enabled
ARS0101512 Kernel-thread crash: unable to handle kernel paging
request
ARS0102285 Kernel crash when accessing files in cramfs/squashfs
ARS0102425 Running a program with gdbserver/gdb causes segfault
ARS0102758 LTP sigaction/16-1.test failing with
CONFIG_MMAP_CODE_SPACE
ARS0102864 Kernel boot stops early with ISS
ARC Linux Release 1.3
The following top-level components are included in this release:
Linux 2.6.30
BusyBox 1.15.3
U-Boot 2009.06
Custom Initramfs with pre-built ARC GNU libraries and Busybox
The newly supported features in the Linux kernel are described in the
following subsections.
Hardware Support: New Features and Changes
CONFIG_ARCH_ARC_ICCM and CONFIG_ARCH_ARC_DCCM : Support for closely
coupled memory (ability to use DCCM and ICCM to optimize data and code
performance)
CONFIG_ARCH_ARC_MMU_V2 : MMU V2, which performs significantly better
then V1, is the default.
9 Synopsys, Inc. September 2011
Linux for DesignWare® ARC® ARC Linux Release 1.3
Note
The kernel fails to boot if you attempt to run it on MMU-V1. If your ARC 700
processor does not have MMU-V2, disable this option in the file of
your kernel.
ARCangel 5 (Xilinx ML509) support—early version
Support for single-cycle byte-swap instruction in kernel if implemented as
extension instruction in hardware
Features
CIFS support
CONFIG_ARCH_ARC_HLINK: User-space file system for host access via
the MetaWare debugger's hostlink interface. This allows file I/O on the
host from ARC Linux running on the ISS or hardware without a working
Ethernet support.
CONFIG_ARCH_ARC_SPACE_RND: Address-space randomization
CONFIG_ARC_STACK_NONEXEC: Non-execute stack-mode option
CONFIG_VFB_SIM: Virtual Framebuffer support for use with simulators
CONFIG_ROOT_NFS : NFS-based root-filesystem now works out of the
box.
CONFIG_STACKTRACE kernel option to help trace sleeping tasks
CONFIG_LATENCYTOP to find the latency of tasks in kernel mode
Kernel Debugging
CONFIG_EARLY_PRINTK to provide early serial-port support to help
debug kernel bring-up on custom hardware
CONFIG_ARC_USER_FAULTS_DEBUG is now replaced with a run-time
toggle print-fatal-signals to dump task
state after a task is killed by a signal.
Same kernel binary can now run on both hardware (AA4) and simulator
to quickly debug field issues.
Optimizations
Signal-handling code no longer flushes TLB and caches for returning to
kernel mode.
September 2011 Synopsys, Inc. 10
ARC Linux Release 1.2 Linux for DesignWare® ARC®
Fast-Path I/D-TLB Refill handlers rewritten to reduce number of
instructions (40/129) as opposed to (117/396).
Five-cycle htonl() as opposed to nine cycles (and provision for one-
cycle hardware-assisted bswap as described above)
Reduced code size for copy_to_user() and copy_from_user() heavily
used in networking and system calls.
ARC EMAC Ethernet driver now works in NAPI mode by default.
CONFIG_EMAC_NAPI provides dynamic switching between polling and
interrupt modes for optimal system performance.
Numerous other optimizations such as ext2-bitops/mutexes
Robustness
Bug fixes
Expanded LTP testing up from 690 kernel syscall tests to 819 kernel
tests and an additional 1965 OpenPosix tests
Note
This release of ARC Linux requires the ARC GNU v2.3 Toolchain. If you are
upgrading to ARC Linux v1.3, you must also upgrade the ARC GNU Toolchain
to v2.3.
ARC Linux Release 1.2
This release supports the Linux 2.6.26 kernel and updated BusyBox and U-
Boot components.
The key new features of this release are as follows:
Linux 2.6.26
High-resolution timers
Tickless idle (for lower power)
Real-time signals support
Two levels of interrupt support
NAPI support on the ARC EMAC for greatly improved networking
performance
Finely tuned copy_from() and copy_to() user code
Re-worked DMA mapping API, optimized to flush only cache lines used
Support for XFS, JFS, and EXT2
11 Synopsys, Inc. September 2011
Linux for DesignWare® ARC® ARC Linux Release 1.1
Support for building with both -O3 and -Os
Support for
BusyBox 1.13.2 support
U-Boot 2009.01
Numerous architecture-level code bug fixes and performance
enhancements
ARC Linux Release 1.1
This release supports the Linux 2.6.19 maintenance release.
The key features of this release are:
Linux 2.6.19 maintenance release
OProfile support
Numerous new system calls supported
U-boot command line support
IPv6 support
Busybox 1.12.1 support
First ARC release of u-boot
Updated debugging features, including
o Kernel Stack Trace in Exceptions
o Low Level Event Logging (similar to LTT)
o Diagnostics to debug User Task Crashes (SegV)
Updated performance:
o r25 Register dedicated to current task pointer
o ARC-optimized page copy and memcpy() functions
o Cache-flush and TLB flush functions optimized
New hardware support:
o ARC 700 MMU v2 supported
o ARC 700 hardware performance counters supported
o ARC PGU and AC'97 support
September 2011 Synopsys, Inc. 12
ARC Linux Release 1.0 Linux for DesignWare® ARC®
ARC Linux Release 1.0
This is the first release of ARC Linux from ARC. The release is based on
the release found at www.arc-linux.org and has many major bug fixes and
enhancements over that release.
The key features of this release follow:
Linux 2.6.19 release
Serial-driver changes to support multiple serial ports
Ethernet driver pre-allocates SKBs for performance increase
o A kernel thread runs and pre-allocates SKBs ready for use by the
driver ISR
Super-fast copy_from_user() and copy_to_user() functions heavily
optimized for ARC
o Instead of a byte copy, the function tries first to use an ARC-
optimized read-read-read-read-write-write-write algorithm
Re-write of the low-level TLB handling fixes multiple bugs exhibited as
segmentation faults
MMU ASID allocation fixed: Upon ASID rollover, if long-running task’s
ASID was acquired by a new task, TLBs were not being flushed
MMU ASID allocation optimized: For a simple shell command such as
ls, ASID now optimally increments by 4 instead of 13. This delays the
ASID rollovers and hence TLB flushes
Diagnostic code added in slow-path and fast TLB-miss handlers to
catch any potential ASID-allocation issue.
This has a minimal impact on performance, but if it needs to be
disabled, change #if 1 to #if 0 to disable the check in the following
files:
o
o .
The following issues have been addressed:
o Setting the system date with date (architecture-specific code
implemented). Previously generated a segmentation fault
o Threading issue where child threads became unresponsive
(missing copy_to_user() in the signal handling code, plus an array
out of bounds access)
o Idle loop goes into sleep mode rather than a while loop
o Re-schedule was called twice for each clock tick
13 Synopsys, Inc. September 2011
Linux for DesignWare® ARC® ARC Linux Release 1.0
o Support for running on ARC xISS and ARC ISS simulators
September 2011 Synopsys, Inc. 14
3
Known Issues
The following are the known issues at the time of release. For the latest
information, go to http://solvnet.synopsys.com/.
9000486164 Linux virtual ENET driver skips packets
with -on=store_cache_data option
9000487553 kernel dentry corruption during LTP mkdir09 test when
LL/SC disabled
9000487933 debug_frame section allocation after vmlinux is already
built
September 2011 Synopsys, Inc. 15