817 Commits

Author SHA1 Message Date
Sebastian Huber
eb7bc09b3b Add Tsi148 driver template 2024-01-31 09:55:59 +01:00
Sebastian Huber
42add0b7f1 Enable kernel space pci_find_device() 2024-01-31 09:55:59 +01:00
Sebastian Huber
0e2d6b8819 Enable NEW_PCIB 2024-01-31 09:55:59 +01:00
Sebastian Huber
398c5f6952 Include missing header file 2024-01-31 09:55:59 +01:00
Sebastian Huber
2e96ed7562 Add pic_if.m 2024-01-31 09:55:59 +01:00
Sebastian Huber
17a3184081 mpc85xx: Port to RTEMS 2024-01-31 09:55:59 +01:00
Chris Johns
1524f95e93 i386/pc686: Fix kernel bus DMA for the PC686 BSP
The x86 provides it own bus space support. Use the generic
bus space calls. This however requires the BUS_SPACE_MEM tag
be provided for all architectures. Make the generic value
match the x86 value.
2023-10-04 16:13:45 +11:00
Kinsey Moore
f0fe0439c4 rtemsbsd/libio: Handle invalid descriptors
The documentation for this function suggests that it can handle invalid
descriptors safely. This change allows negative descriptors to be
handled without a crash.
2023-09-20 15:50:25 -05:00
Chris Johns
7cc487f2d3 rtemsbsd/vfs: Use VOP_REMOVE to remove file nodes 2023-08-07 07:58:30 +10:00
Chris Johns
fdde806c50 rtemsbsd/syscall: Set unitialised variable in open
The open path length was not set when at the root node and this
sometimes failed the current directory checks.
2023-08-06 15:45:21 +10:00
Chris Johns
f55a3dd32f nfs: Support multiple mounts with the same path basename
NFSv4 mounts NFS file systems to the flat root of a pseudo file
system. This change allow the same basename to be used.
2023-07-21 14:56:02 +10:00
Chris Johns
1dfdee9ce9 freebsd/vfs: Pass in the td's cred to the VFS calls
Closes #4723
2023-07-21 14:56:02 +10:00
Chris Johns
65913f4b3b syscall/open: Reference the path info directory vnode
The kernel open call requires a path so to open a file we need to
set the current directory to the parent vnode. If the open mode is
create the path info vnode is the directory to perform the open
create in. Using the parent node creates the file in wrong path.

Updates #4723
2023-07-21 14:56:02 +10:00
Aaron Nyholm
5de608c582 rtemsbsd/versal_slcr: Fix Versal GEM clock set 2023-06-20 10:16:10 +10:00
Aaron Nyholm
7170d1ed14 rtemsbsd/rc_conf: Fixed non-nullterminated string causing crashes 2023-04-13 09:35:19 +10:00
Rick VanderWal
ac4cf946a2 rtemsbsd/sdhci: Fix Arasan driver when no card present
This fixes an issue where the card present signal doesn't stabilize
quickly and indicates present when no card is inserted in a removable
slot.
2023-04-04 09:48:25 -05:00
Aaron Nyholm
a39a6a249f rtemsbsd/versal: Add SDHCI Driver support
Tested on VCK190

Closes #4762
2022-11-22 13:53:27 +11:00
Kinsey Moore
93b259b129 nexus/zynqmp: Use device trees for CGEM
This moves the ZynqMP BSPs over to using device trees for CGEM
instantiation now that all BSP variants provide appropriate device
trees.
2022-11-10 08:06:31 -06:00
Kinsey Moore
f462c4de5f rtemsbsd/arasan_sdhci: Improve board/eMMC compat
This improves the compatibility of this driver across board and memory
variants by avoiding use of the HISPD mode.
2022-10-21 15:10:43 -05:00
Kinsey Moore
cf8fa08015 rtemsbsd/arasan_sdhci: Remove redundant clock cap
The BSD SD subsystem enforces a 50MHz clock cap for devices which don't
report their own maximum clock speed. This setting is unnecessary for
the Zynq 7000 version of this IP and restricts the Zynq Ultrascale+
MPSoC version of this IP without need since it reports its maximum speed
as 200MHz.
2022-10-21 15:10:43 -05:00
Kinsey Moore
452637ae99 rtemsbsd/arasan_sdhci: Update description
This driver works on both the Zynq 7000 chips as well as the Zynq
Ultrascale+ MPSoC chips and targets the Arasan SDHCI IP that exists in
both.
2022-10-21 15:10:43 -05:00
Kinsey Moore
ba1b041bd1 rtemsbsd/arasan_sdhci: Stop masking capabilities
The initial version of this driver was masking the capabilities register
to hide 8 bit bus capability. This is not necessary since these devices
report that capability correctly and the masking affects performance
negatively on ZynqMP boards where the 8 bit bus is supported. This also
removes two quirks that were made necessary by the capabilities masking.
2022-10-21 15:10:43 -05:00
Kinsey Moore
63dae7159f rtemsbsd/arasan_sd: Prevent disabled device probe
Probing a SDIO/SDHCI interface that has been disabled by system init via
holding it in reset can cause a CPU hang. This prevents probing of
devices that have been disabled in such a manner on ZynqMP systems.
2022-09-16 09:41:49 -05:00
Sebastian Huber
a0d36f58fd arm/lpc: Add option to customize device probes 2022-09-06 13:22:45 +02:00
Sebastian Huber
763a8a399f Define IN_HISTORICAL_NETS for kernel space
Required by FreeBSD commit:

Author: Mike Karels <karels@FreeBSD.org>
Date:   Tue Oct 26 22:01:09 2021 -0500

    kernel: deprecate Internet Class A/B/C

    Hide historical Class A/B/C macros unless IN_HISTORICAL_NETS is defined;
    define it for user level.  Define IN_MULTICAST separately from IN_CLASSD,
    and use it in pf instead of IN_CLASSD.  Stop using class for setting
    default masks when not specified; instead, define new default mask
    (24 bits).  Warn when an Internet address is set without a mask.

    MFC after:      1 month
    Reviewed by:    cy
    Differential Revision: https://reviews.freebsd.org/D32708
2022-07-07 14:22:54 +02:00
Konstantin Belousov
66923c7b02 Kernel-side infrastructure to implement nvlist-based set/get ifcaps
Reviewed by:	hselasky, jhb, kp (previous version)
Sponsored by:	NVIDIA Networking
MFC after:	3 weeks
Differential revision:	https://reviews.freebsd.org/D32551
2022-07-07 14:22:54 +02:00
Rick Macklem
5f0e04113f uipc_socket.c: Modify MSG_TLSAPPDATA to only do Alert Records
Without this patch, the MSG_TLSAPPDATA flag would cause
soreceive_generic() to return ENXIO for any non-application
data record in a TLS receive stream.

This works ok for TLS1.2, since Alert records appear to be
the only non-application data records received.
However, for TLS1.3, there can be post-handshake handshake
records, such as NewSessionKey sent to the client from the
server. These handshake records cannot be handled by the
upcall which does an SSL_read() with length == 0.

It appears that the client can simply throw away these
NewSessionKey records, but to do so, it needs to receive
them within the kernel.

This patch modifies the semantics of MSG_TLSAPPDATA slightly,
so that it only applies to Alert records and not Handshake
records. It is needed to allow the krpc to work with KTLS1.3.

Reviewed by:	hselasky
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D35170
2022-07-07 14:22:54 +02:00
Kristof Provost
ee823c1666 Widen ifnet_detach_sxlock coverage
Widen the ifnet_detach_sxlock to cover the entire vnet sysuninit code.
This ensures that we can't end up having the vnet_sysuninit free the UDP
pcb while the detach code is running and trying to purge the UDP pcb.

MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D28530
2022-07-07 14:22:54 +02:00
Rick Macklem
60f67a1f37 Add the MSG_TLSAPPDATA flag to indicate "return ENXIO" for non-application TLS data records.
The kernel RPC cannot process non-application data records when
using TLS. It must to an upcall to a userspace daemon that will
call SSL_read() to process them.

This patch adds a new flag called MSG_TLSAPPDATA that the kernel
RPC can use to tell sorecieve() to return ENXIO instead of a non-application
data record, when that is what is at the top of the receive queue.
I put the code in #ifdef KERN_TLS/#endif, although it will build without
that, so that it is recognized as only useful when KERN_TLS is enabled.
The alternative to doing this is to have the kernel RPC re-queue the
non-application data message after receiving it, but that seems more
complicated and might introduce message ordering issues when there
are multiple non-application data records one after another.

I do not know what, if any, changes will be required to support TLS1.3.

Reviewed by:	glebius
Differential Revision:	https://reviews.freebsd.org/D25923
2022-07-07 14:22:54 +02:00
Sebastian Huber
9a88b07c33 user-space: Request FreeBSD bitset API
This is required for recent Newlib versions.

Update #4667.
2022-06-30 17:40:33 +02:00
Sebastian Huber
c5c5a199c6 if_lpe.c: Use interface transmit
This avoids the need for a transmit task and transmit interrupts.
2022-06-24 07:33:29 +02:00
Sebastian Huber
1056349b4e if_lpe.c: Move transmit initialization
Move the transmit initialization out of the transmit task to be able to
remove the transmit task in the next patch.
2022-06-24 07:32:50 +02:00
Sebastian Huber
ff4c60af7a if_lpe.c: Port to LibBSD 2022-06-24 07:32:50 +02:00
Sebastian Huber
2722615130 if_lpe.c: Import legacy LPC Ethernet driver
The standard FreeBSD MII support causes severe problems on the LPC3200
chip family.  If an Ethernet module register is accessed while there is
no clock from the PHY, the chip completely locks up and only an external
watchdog can recover from this state.  The legacy driver had a custom
PHY management code which helped to avoid such issues.  The if_lpe.c
driver is no longer maintained by FreeBSD.
2022-06-24 07:32:50 +02:00
Sebastian Huber
ed25b390fc Use rtems_task_exit() 2022-06-01 10:34:36 +02:00
Sebastian Huber
61f646d9b9 if_atsam: Recover from receive freezes
Under unknown conditions the receive path ended up in a frozen state.
In this state, the DMA and driver descriptor head were equal and all
receive descriptors had the used bit set.  So, the DMA was unable to
store received frames.  However, the receive daemon was never woken up
to refill the receive buffers.  It seems that the RXUBR interrupt can be
used to recover from this state.

Update #4652.
2022-06-01 09:57:56 +02:00
Sebastian Huber
8588e9542e if_atsam: Shorten sysctl names
Update #4652.
2022-06-01 09:57:53 +02:00
Sebastian Huber
bd56cb2e59 if_atsam: Add tx/rx desc sysctls
Update #4652.
2022-06-01 09:57:50 +02:00
Sebastian Huber
683bae95b3 if_atsam: Add register sysctls
Update #4652.
2022-06-01 09:57:47 +02:00
Sebastian Huber
07e282034c if_atsam: Allow stats reset via sysctl
Update #4652.
2022-06-01 09:57:28 +02:00
Sebastian Huber
7bc7bae957 Add program destructor support
Update #4650.
2022-05-12 07:45:30 +02:00
Sebastian Huber
e992d45b63 if_atsam: Fix interface stop
Update #4652.
2022-05-11 15:54:23 +02:00
Sebastian Huber
4ad09617d0 if_atsam: Support transmit bpf
Update #4652.
2022-05-11 15:49:05 +02:00
Sebastian Huber
989675ee7c if_atsam: Do not use rtems_bsdnet_newproc()
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
821bcb7345 if_atsam: Support IFCAP_VLAN_HWTAGGING
This is required to enable checksum offload for vlan interfaces.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
967613fbce if_atsam: Optimize receive
Do not use the interface mutex in the receive loop.  Avoid multiple
reads of DMA descriptor words.  Use a compile-time constant for the
receive DMA descriptor count to simplify calculations.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
2cb974fa20 if_atsam: Optimize transmit
Use the transmit interface handler to avoid a transmit task/interrupt.
Use a compile-time constant for the transmit DMA descriptor count to
simplify calculations.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
c944cb9325 if_atsam: Add multicast support
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
1230011435 if_atsam: Fix start/stop of interface
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
975916a75d if_atsam: Fix interrupt setup
The interrupt is enabled by rtems_interrupt_handler_install().

Update #4652.
2022-05-11 15:49:04 +02:00