Commit Graph

29548 Commits

Author SHA1 Message Date
Pavel Pisa
2d5902d6ae arm/raspberrypi: update VideoCore cache flush workaround to work on RPi2.
The arm_cp15_data_cache_clean_and_invalidate leads to hang on RPi2,
clean by individual lines works on RPi1 and RPi2.
2016-07-04 15:55:57 +02:00
Pavel Pisa
0cb50ab25b score/arm: Ensure that copile time alignment is 64 bytes for Cortex-A multilib.
Some/many Cortex-A cores have data cache line length 64 bytes and maximum
value has to be used for system structures alignment.
2016-07-04 15:55:57 +02:00
Pavel Pisa
fe106ad5e2 arm/raspberrypi: Enable HYP to SVC switch for this BSP.
This support is required when newer firmware is used on
Raspberry Pi 2 boards.
2016-07-04 15:55:57 +02:00
Pavel Pisa
5812df8f52 bsps/arm: Support recent bootloaders starting kernel in HYP mode
When HYP mode is detected at startup then setup HYP mode
vectors table (for future extensions) clean exceptions
switching to HYP mode and switch CPU to ARM SVC mode.

BSPs which want to use this support need to include next option
in their configure.ac

  RTEMS_BSPOPTS_SET([BSP_START_IN_HYP_SUPPORT],[*],[1])
  RTEMS_BSPOPTS_HELP([BSP_START_IN_HYP_SUPPORT], [Support start of BSP in ARM HYP mode])
  AM_CONDITIONAL(BSP_START_IN_HYP_SUPPORT,test "$BSP_START_IN_HYP_SUPPORT" = "1")

and need to include next lines in corresponding Makefile.am

  if BSP_START_IN_HYP_SUPPORT
  libbsp_a_SOURCES += ../shared/startup/bsp-start-in-hyp-support.S
  endif
2016-07-04 15:55:56 +02:00
Pavel Pisa
19a9090164 arm/score and shared: define ARM hypervisor mode and alternate vector table base access.
The main reason for inclusion of minimum hypervisor related defines
is that current ARM boards firmware and loaders (U-boot for example)
start loaded operating system kernel in HYP mode to allow it take
control of virtualization (Linux/KVM for example).
2016-07-04 15:55:56 +02:00
Alexander Krutwig
137bd3747e bsp/atsam: Add RTC driver 2016-07-04 14:10:34 +02:00
Sebastian Huber
0057e38f9d libchip: Simplify RTC driver 2016-07-04 11:06:53 +02:00
Sebastian Huber
2e3ba71256 net: Fix byte order issue for getnameinfo() 2016-07-01 15:16:10 +02:00
Sebastian Huber
df2177ab5e score: Change scheduler node init and destroy
Provide the scheduler node to initialize or destroy to the corresponding
operations.  This makes it possible to have more than one scheduler node
per thread.
2016-07-01 14:47:07 +02:00
Sebastian Huber
4cb13c3998 score: Fix MPCI message layout
Restore the 32-bit priority field in MP_packet_Prefix.

Bug introduced by 254dc82daf.

Close #2750.
2016-07-01 11:55:23 +02:00
Sebastian Huber
c0bd0064ac rtems: Fix rtems_task_set_scheduler() API
Task priorities are only valid within a scheduler instance. The
rtems_task_set_scheduler() directive moves a task from one scheduler
instance to another using the current priority of the thread. However,
the current task priority of the source scheduler instance is undefined
in the target scheduler instance. Add a third parameter to specify the
priority.

Close #2749.
2016-07-01 11:51:49 +02:00
Sebastian Huber
8d5b03802e score: Workaround for #2751
The ARM and PowerPC interrupt epilogues call _Thread_Dispatch() with
interrupts disabled (counter example: SPARC).

On SMP configurations, since inter-processor interrupts set the thread
dispatch necessary indicator this prevents a thread dispatch
notification in post-switch handlers (which all run with interrupts
disabled).

On all configurations, this is a serious issue for the interrupt
latency.

Update #2751
2016-07-01 11:51:49 +02:00
Sebastian Huber
23dedc448e score: Next try to fix thread lock on SMP 2016-07-01 11:51:49 +02:00
Sebastian Huber
4142f73762 score: Fix priority affinity SMP scheduler
Bug introduced by 9bfad8cd51.
2016-07-01 11:51:48 +02:00
Sebastian Huber
4280dff7cf smptests/smpstrongapa01: Simplify 2016-06-30 11:01:05 +02:00
Sebastian Huber
4fe0e97f91 smptests/smpstrongapa01: Add test cases 2016-06-30 09:54:41 +02:00
Sebastian Huber
729cf694e8 bsps: Do not use fast idle clock for SMP
We may have more than one idle thread.  Thus, the clock driver fast idle
logic would be a bit more complicated.
2016-06-30 09:51:19 +02:00
Sebastian Huber
09c87fb06b score: Strong APA scheduler processor allocation
Use _Scheduler_SMP_Allocate_processor_exact() to prevent unexpected
migrations.
2016-06-30 09:51:18 +02:00
Sebastian Huber
029877282e score: Avoid atomic fences for thread wait flags
The use of atomic fences is brittle and may break due to changes in
different areas which is hard to manage.
2016-06-30 07:57:44 +02:00
Sebastian Huber
b6b25a9e68 score: Fix thread lock on SMP configurations 2016-06-30 07:57:33 +02:00
Sebastian Huber
297d4372ce score: _CPU_SMP_Send_interrupt() documentation 2016-06-29 11:04:39 +02:00
Alexander Krutwig
891fa3eb5b bsp/atsam: Add support for TCM 2016-06-29 10:38:19 +02:00
Sebastian Huber
9bb3ce3918 score: Fix SMP message handling
According to the C11 standard only atomic read-modify-write operations
guarantee that the last value written in modification order is read, see
"7.17.3 Order and consistency".  Thus we must use a read-modify-write in
_SMP_Inter_processor_interrupt_handler() to make sure we read an
up-to-date message.
2016-06-29 09:50:47 +02:00
Pavel Pisa
b83c23e62a arm/raspberrypi: resolve BSP warnings. 2016-06-28 17:07:02 +02:00
Pavel Pisa
68565b090e arm/raspberrypi: run VideoCore and mailbox code through rtems.uncrustify.
Some changes have been reverted to keep readability.
For example squash of BCM2835_MBOX_TAG_* defines
which are visually aligned in column.
2016-06-28 16:15:38 +02:00
Mudit Jain
48704cdebd arm/raspberrypi: Adding functionalities to Mailbox RPi
Added functions for retrieving firmware revision,
board model and board revision.
2016-06-28 15:44:58 +02:00
Sebastian Huber
aa30e2c115 bsp/mvme162: Include missing <rtems/bspIo.h> 2016-06-28 13:10:16 +02:00
Christian Mauderer
095ecbf263 libnetworking: Import current <sys/socket.h>
Import the <sys/socket.h> from current FreeBSD.  This allows to build
some current software (e.g. libressl).
2016-06-28 13:10:01 +02:00
Sebastian Huber
e79a0ca75f libnetworking: Move RTEMS-specific socket wake-up
Close #2748.
2016-06-28 13:10:01 +02:00
Christian Mauderer
4ba4f8218a libnetworking: Hide SO_PRIVSTATE 2016-06-28 13:10:01 +02:00
Christian Mauderer
f0fc2c0e02 libnetworking: Add <machine/_align.h>
This is necessary for new <sys/socket.h>.
2016-06-28 13:10:01 +02:00
Christian Mauderer
4c02385d8f libnetworking: Import current <arpa/inet.h>
Import the <arpa/inet.h> from current FreeBSD.  Necessary due to changes
in <netinet/in.h>.  Remove BSD hack from <arpa/inet.h>.

Clean up problems with htonl().  These functions are defined in
<arpa/inet.h>.  This lead to some problems because they are defined in
<rtems/endian.h> too.  Add NTOHL, ... to
<rtems/rtems_bsdnet_internal.h>.
2016-06-28 13:10:01 +02:00
Christian Mauderer
657e6c93ef libnetworking: Import current <netinet/in.h>
Import the <netinet/in.h> from current FreeBSD.  This allows to build
some current software (e.g. libressl).

Add legacy support like

* prototype for in_cksum(),
* IPPORT_USERRESERVED,
* deprecated IPCTL_RT* defines,
* ip_fw_chk_t and ip_fw_ctl_t,
* ip_nat_... (IP NAT hooks), and
* IP_NAT option for get/setsockopt()

to new <rtems/rtems_netinet_in.h>.
2016-06-28 13:09:44 +02:00
Christian Mauderer
005c3fe701 libnetworking: Import current <netinet6/in6.h>
Import the <netinet6/in6.h> from current FreeBSD.  This allows to build
some current software (e.g. libressl).
2016-06-28 13:02:20 +02:00
Christian Mauderer
f2082cc61d libnetworking: Import <sys/_sockaddr_storage.h>
Import the <sys/_sockaddr_storage.h> from current FreeBSD.  Necessary
for <netinet/in.h> update.
2016-06-28 13:02:20 +02:00
Christian Mauderer
195d412d39 libnetworking: Add minimal getnameinfo()
This implementation just falls back to giving a string representation of
the IP.  It supports IPv4 only.

Add test for getnameinfo().
2016-06-28 13:01:47 +02:00
Christian Mauderer
232d6fecb6 libnetworking: Import current <netdb.h>
Import the <netdb.h> from current FreeBSD.  This allows to build some
current software (e.g. libressl).

Add __h_errno().

Update gethostent_r() API.  Linux and FreeBSD use a common API now.
Adapt the RTEMS one to provide the same one.

Match gethostbyname_r() with prototype.
2016-06-28 13:01:38 +02:00
Christian Mauderer
7e6f2350ea libnetworking: Add <rtems/rtems_netdb.h>
Move prototypes of non-portable _get*by*name/addr and _set/end*ent
functions.  This makes it easier to update <netdb.h>.
2016-06-28 13:01:37 +02:00
Christian Mauderer
187a074404 libcsupport: Add dummy for setgroups().
The dummy for setgroups() allows applications using it to build (for example
civetweb webserver).
2016-06-28 13:01:37 +02:00
Sebastian Huber
254dc82daf score: Change Priority_Control to 64-bit
A 32-bit Priority_Control limits the uptime to 49 days with a 1ms clock
tick in case the EDF scheduler is used.  Increase it to 64-bit to enable
proper operation of the EDF scheduler,

Close 2173.
2016-06-24 14:44:31 +02:00
Sebastian Huber
1d72f03e5a score: Silence integer conversion warnings 2016-06-24 14:44:31 +02:00
Sebastian Huber
9f61ad60c0 testsuites: Increase invalid priority values
Increase the invalid priority values to support test runs with
alternative schedulers offering a significant higher maximum priority
value, e.g. EDF.
2016-06-24 14:44:31 +02:00
Sebastian Huber
1c77a36f11 bsps: Include missing <rtems/bspIo.h> 2016-06-24 14:31:29 +02:00
Sebastian Huber
50a56dff13 score: Move SCHEDULER_EDF_PRIO_MSB
This is an implementation detail of the EDF scheduler.
2016-06-24 11:52:57 +02:00
Pavel Pisa
14de20f15b arm/raspberrypi: Force VC mail box buffer to be synchronized through cache.
This solution is quick fix until CPU_DATA_CACHE_ALIGNMENT is defined
and cache manager is checked on all Raspberry Pi variants.
2016-06-24 11:24:09 +02:00
Pavel Pisa
8dcb8837f3 MAINTAINERS: added self 2016-06-24 11:23:46 +02:00
Sebastian Huber
a4a307dfbd score: Fix _Scheduler_EDF_Yield()
A non-preemptive task must yield if it says so.
2016-06-24 10:28:02 +02:00
Sebastian Huber
51e008dda1 posix: Fix pthread_create()
Do not access data of the executing thread without proper locks.
2016-06-24 10:28:02 +02:00
Sebastian Huber
b364d386c9 sptests/spintrcritical23: Explicity set scheduler
This test uses scheduler-specific data structures, thus it must use the
right scheduler.
2016-06-24 10:27:53 +02:00
Sebastian Huber
b679b4929d sptests/sp42: Relax priority requirements 2016-06-23 10:36:23 +02:00