Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b6382ee
idpf: fix P2P compilation issues
sarathso Dec 12, 2025
f6751c9
idpf: remove kcompat_*.h files getting generated
sarathso Jan 5, 2026
53d90c4
idpf: restore vc_xn_shutdown on reset
etantilov Jan 2, 2026
c0f7d65
idpf: set compile as default target
sarathso Jan 16, 2026
54b5e77
idpf: copy README to the idpf_*directory
sarathso Dec 11, 2025
f685875
compat: replace MODULE_INFO() macro to avoid CI failures
pkitszel Jan 12, 2026
f63ea7d
mev-shared: Add MMG device ids
cpau-intel Dec 4, 2025
fafd83b
idpf: Linux does not use new device ID to probe for LAN APF
madhuchittim Jan 8, 2026
9012259
idpf: add support for certain build flags
sarathso Dec 18, 2025
9430c60
idpf: fix driver unload with iommu_bypass
etantilov Feb 3, 2026
8a602f3
idpf: fix IRQ hint clearing on vport deinit
etantilov Feb 2, 2026
f6ba50c
idpf: map bufq_sets refillqs to rxq refillqs
jahay1 Jan 24, 2026
1cc387e
idpf: add missing buffer pool plumbing for AF_XDP/XDP TX
jahay1 Jan 27, 2026
7c255c9
idpf: fix circular locking dependency on load
etantilov Feb 3, 2026
fb43a72
idpf: keep the netdev when a reset fails
etantilov Jan 5, 2026
dfe1472
idpf: fix error handling in the init_task on load
etantilov Jan 6, 2026
cda2747
idpf: detach and close netdevs while handling a reset
etantilov Jan 5, 2026
abc4ad4
idpf: make mbx_task queueing and cancelling more consistent
walking-machine Feb 6, 2026
3867481
idpf: remove spin locks from idpf_ctlq_shutdown()
etantilov Feb 7, 2026
c429937
idpf: fix memory leak in idpf_ptp_get_caps()
etantilov Feb 11, 2026
a8c3b0d
compat: add DPLL tracker arg
mszycik Feb 6, 2026
c44e5ad
compat: change DPLL tracker flags from HAVE to NEED
mszycik Feb 9, 2026
38923e2
compat: fix mutex guard detection for kernel 7.0+
aloktion Feb 13, 2026
b0225fe
compat: add inline prefix to kc_module_init_impl
apielech-intel Feb 13, 2026
67c9b7b
compat: add HAVE_PTP_CLOCK_INFO_GETCYCLES64 define for monotonic timer
kubalewski Feb 6, 2026
7428362
compat: fix NEED_DEFINE_SIMPLE_DEV_OPS define
Jakub-Staniszewski Feb 17, 2026
db23836
compat: Change MANDIR fallback
apielech-intel Feb 24, 2026
537ee16
compat: add support for resource_set_range_and resource_set_size
jahay1 Jan 23, 2026
945b7bf
fix: Solve C-standard formatting issues
punfil Jan 24, 2026
4abf69a
idpf: fix double-free in idpf_vdcm_dev_set_vector_signal
madhuchittim Feb 26, 2026
09f9c75
virtchnl: add new qtype for counter notifications (#223)
jayaprakashns Feb 18, 2026
b99a4c0
idpf: add flow steering support
madhuchittim Aug 5, 2025
a9a2738
idpf: fix memory leak of flow steer list on rmmod
madhuchittim Feb 26, 2026
d64151b
idpf: fix issue with ethtool -n command display
egcarril Feb 27, 2026
0a32b36
mev-shared: add MMIO regions to idpf_hw
jahay1 Jan 23, 2026
7ca8248
idpf: implement get LAN MMIO memory regions
jahay1 Jan 23, 2026
105fb96
idpf: fix idpf_shutdown callback
etantilov Feb 27, 2026
ff22f09
idpf: fix possible race in idpf_vc_xn_push_free()
etantilov Mar 3, 2026
83ab270
idpf: gut most of the prior IDC and RCA implementations
jahay1 Jan 14, 2026
2be6ac3
idpf: align RDMA (and RCA) vector reservation with upstream
jahay1 Jan 15, 2026
7ce88c6
iidc: ieps: add struct to pass NAC topology IEPS Aux device
shubhamdas-intel May 14, 2024
cb66521
iidc: add IDPF specific support and bump version
jahay1 Jan 14, 2026
b19a558
idpf: implement core RDMA auxiliary dev create, init, and destroy
jahay1 Jan 15, 2026
e93d06a
idpf: implement RDMA vport auxiliary dev create, init, and destroy
jahay1 Jan 20, 2026
42978c2
idpf: implement remaining IDC RDMA core callbacks and handlers
jahay1 Jan 20, 2026
8ee389f
idpf: implement IDC vport aux driver MTU change handler
jahay1 Jan 20, 2026
9e0998c
idpf: only expose vport auxiliary device for vport0
jahay1 Feb 25, 2026
6f908fd
idpf: bump driver version to 1.0.3
madhuchittim Mar 4, 2026
3629f7f
Revert "idpf: fix possible race in idpf_vc_xn_push_free()"
etantilov Mar 4, 2026
5d8d1cc
idpf: keep mailbox in poll mode on Simics
jahay1 Mar 5, 2026
155e424
idpf: bump driver version to 1.0.4
madhuchittim Mar 5, 2026
cf54671
iidc: rearrange cdev_info struct for in-tree idpf compatibility
jahay1 Mar 6, 2026
9658b9d
idpf: bump driver version to 1.0.5
jahay1 Mar 7, 2026
2bbcaa9
idpf: use idpf_get_reg_addr for ADI mailbox register access
madhuchittim Mar 10, 2026
36fc166
idpf: move vdev creation workaround to avoid allocation
jahay1 Mar 16, 2026
c54de28
idpf: revert Simics mailbox workaround and correct register API usage
jahay1 Mar 16, 2026
d732433
idpf: bump driver version to 1.0.6
madhuchittim Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 36 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Copyright (C) 2021 Intel Corporation

TARGETS := idpf auxiliary
VERSION := 1.0.2
VERSION := 1.0.6

# Shortcut version target
ifneq ($(filter version,${MAKECMDGOALS}),)
Expand All @@ -19,6 +19,18 @@ ifneq (${KERNELRELEASE},)
obj-y := $(strip $(addsuffix /src/,${TARGETS}))
ccflags-y += -I$(src)
subdir-ccflags-y += -I$(src)

# Apply build modifier flags
ifeq (${BUILD_UPLINK_PORT_STATS},YES)
ccflags-y += -DCONFIG_UPLINK_PORT_STATS
subdir-ccflags-y += -DCONFIG_UPLINK_PORT_STATS
endif

ifeq (${BUILD_RCA},YES)
ccflags-y += -DCONFIG_RCA_SUPPORT -DCONFIG_OEM_CAPS
subdir-ccflags-y += -DCONFIG_RCA_SUPPORT -DCONFIG_OEM_CAPS
endif

else # ifneq (${KERNELRELEASE},)
# normal make

Expand Down Expand Up @@ -68,12 +80,12 @@ endif
CHECK_AUX_BUS := $(realpath ./scripts/check_aux_bus)
$(shell chmod +x ${CHECK_AUX_BUS})

include common.mk
include idpf/src/common.mk

# SIOV support is only supported if the kernel has features for controlling
# PASID support. Do not even try to build SIOV support if the kernel lacks
# the necessary infrastructure.
ifneq ($(shell grep HAVE_PASID_SUPPORT $(src)/kcompat_generated_defs.h),)
ifneq ($(shell grep HAVE_PASID_SUPPORT idpf/src/kcompat_generated_defs.h),)
export ENABLE_SIOV_SUPPORT := 1
else
# Force SIOV support on ARM, which is needed by ACC. Since we cannot
Expand All @@ -84,7 +96,7 @@ export ENABLE_SIOV_SUPPORT := 1
override CFLAGS_EXTRA += -DENABLE_ACC_PASID_WA
endif
endif # HAVE_PASID_SUPPORT is in kcompat_generated_defs.h
ifneq ($(shell grep HAVE_DEVLINK_PORT_NEW $(src)/kcompat_generated_defs.h),)
ifneq ($(shell grep HAVE_DEVLINK_PORT_NEW idpf/src/kcompat_generated_defs.h),)
export ENABLE_DEVLINK_SUPPORT := 1
endif # HAVE_DEVLINK_PORT_NEW is in kcompat_generated_defs.h

Expand Down Expand Up @@ -137,9 +149,26 @@ $(call cmd_depmod)
endef
endif

compile:
# Set default goal to compile (must be set before the first target is defined)
.DEFAULT_GOAL := compile

# Ensure kcompat_generated_defs.h exists for all targets before compiling
# This is done by invoking a simple target in each module's Makefile which
# will cause common.mk to be included and generate the kcompat file
.PHONY: prepare_kcompat
prepare_kcompat:
@for target in ${TARGETS}; do \
if [ -f $$target/src/Makefile ]; then \
${MAKE} -C $$target/src --no-print-directory -s version 2>/dev/null || true; \
fi; \
done

compile: prepare_kcompat
@${MAKE} -C ${KSRC} M=$$PWD ${CONFIG_DRIVERS} ccflags-y="${CFLAGS_EXTRA} ${EXTRA_CFLAGS}" modules \
NEED_AUX_BUS=${NEED_AUX_BUS} ${EXTRA_OPTS}
NEED_AUX_BUS=${NEED_AUX_BUS} \
BUILD_UPLINK_PORT_STATS=${BUILD_UPLINK_PORT_STATS} \
BUILD_RCA=${BUILD_RCA} \
${EXTRA_OPTS}

.PHONY: install
install: compile
Expand All @@ -155,7 +184,7 @@ uninstall:
.PHONY: clean
clean:
@${MAKE} -C ${KSRC} M=$$PWD clean
@rm -f kcompat_generated_defs.h
@rm -f idpf/src/kcompat_generated_defs.h auxiliary/src/kcompat_generated_defs.h

endif # ifneq (${KERNELRELEASE},)
endif # version target handling
4 changes: 2 additions & 2 deletions auxiliary/src/common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -347,8 +347,8 @@ ifeq (,${MANDIR})
MANDIR := $(firstword ${MANDIR})
endif
ifeq (,${MANDIR})
# fallback to /usr/man
MANDIR := /usr/man
# fallback to /usr/share/man (FHS standard; legacy /usr/man not present on RHEL 9+)
MANDIR := /usr/share/man
endif

####################
Expand Down
14 changes: 12 additions & 2 deletions auxiliary/src/kcompat-generator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,11 @@ function gen-cleanup() {
rcuh='include/linux/rcupdate.h'
gen NEED_DEFINE_FREE if macro DEFINE_FREE absent in "$ch"
gen NEED___DEFINE_CLASS_IS_CONDITIONAL if macro __DEFINE_CLASS_IS_CONDITIONAL absent in "$ch"
gen NEED_DEFINE_GUARD_MUTEX if invocation of macro DEFINE_GUARD absent or lacks mutex_lock in "$mh"
# Check for mutex guards in both old and new APIs
HAVE_MUTEX_GUARDS=0
check invocation of macro DEFINE_LOCK_GUARD_1 matches mutex in "$mh" && HAVE_MUTEX_GUARDS=1
check invocation of macro DEFINE_GUARD matches mutex in "$mh" && HAVE_MUTEX_GUARDS=1
gen NEED_DEFINE_GUARD_MUTEX if string "$HAVE_MUTEX_GUARDS" equals 0
gen NEED_LOCK_GUARD_FOR_RCU if invocation of macro DEFINE_LOCK_GUARD_0 absent or lacks rcu in "$rcuh"
gen NEED_DEFINE_FREE_KFREE if invocation of macro DEFINE_FREE absent or lacks kfree in "$slabh"
gen NEED_DEFINE_FREE_KVFREE if invocation of macro DEFINE_FREE absent or lacks kvfree in "$slabh"
Expand Down Expand Up @@ -183,6 +187,7 @@ function gen-dpll() {
gen HAVE_DPLL_PHASE_OFFSET if method phase_offset_get of dpll_pin_ops in "$dh"
gen HAVE_DPLL_PHASE_OFFSET_MONITOR if method phase_offset_monitor_set of dpll_device_ops in "$dh"
gen NEED_DPLL_NETDEV_PIN_SET if fun dpll_netdev_pin_set absent in "$dh"
gen NEED_DPLL_TRACKER if typedef dpll_tracker absent in "$dh"
}

function gen-ethtool() {
Expand Down Expand Up @@ -379,7 +384,10 @@ function gen-packing() {
}

function gen-pci() {
ioporth='include/linux/ioport.h'
pcih='include/linux/pci.h'
gen HAVE_RESOURCE_SET_RANGE if fun resource_set_range in "$ioporth"
gen HAVE_RESOURCE_SET_SIZE if fun resource_set_size in "$ioporth"
gen HAVE_PCI_MSIX_ALLOC_IRQ_AT if fun pci_msix_alloc_irq_at in "$pcih"
gen HAVE_PCI_MSIX_CAN_ALLOC_DYN if fun pci_msix_can_alloc_dyn in "$pcih"
gen HAVE_PCI_MSIX_FREE_IRQ if fun pci_msix_free_irq in "$pcih"
Expand All @@ -404,6 +412,7 @@ function gen-ptp() {
gen HAVE_PTP_CANCEL_WORKER_SYNC if fun ptp_cancel_worker_sync in "$clockh"
gen HAVE_PTP_CLOCK_DO_AUX_WORK if method do_aux_work of ptp_clock_info in "$clockh"
gen HAVE_PTP_CLOCK_INFO_ADJFINE if method adjfine of ptp_clock_info in "$clockh"
gen HAVE_PTP_CLOCK_INFO_GETCYCLES64 if method getcycles64 of ptp_clock_info in "$clockh"
gen HAVE_PTP_CLOCK_INFO_GETTIME64 if method gettime64 of ptp_clock_info in "$clockh"
gen HAVE_PTP_CLOCK_INFO_GETTIMEX64 if method gettimex64 of ptp_clock_info in "$clockh"
gen HAVE_PTP_FIND_PIN_UNLOCKED if fun ptp_find_pin_unlocked in "$clockh"
Expand Down Expand Up @@ -525,8 +534,9 @@ function gen-other() {
gen HAVE_MDEV_GET_DRVDATA if fun mdev_get_drvdata in include/linux/mdev.h
gen HAVE_MDEV_REGISTER_PARENT if fun mdev_register_parent in include/linux/mdev.h
gen HAVE_VM_FLAGS_API if fun vm_flags_init in include/linux/mm.h
gen NEED_MODULE_INFO_WITHOUT_CHECK if implementation of macro MODULE_INFO matches __builtin_strlen in include/linux/moduleparam.h
gen HAVE_NL_SET_ERR_MSG_FMT if macro NL_SET_ERR_MSG_FMT in include/linux/netlink.h
gen NEED_DEFINE_SIMPLE_DEV_OPS if macro DEFINE_SIMPLE_DEV_OPS absent in include/linux/pm.h
gen NEED_DEFINE_SIMPLE_DEV_PM_OPS if macro DEFINE_SIMPLE_DEV_PM_OPS absent in include/linux/pm.h
gen NEED_PM_SLEEP_PTR if macro pm_sleep_ptr absent in include/linux/pm.h
gen NEED_DEV_PM_DOMAIN_ATTACH if fun dev_pm_domain_attach absent in include/linux/pm_domain.h include/linux/pm.h
gen NEED_DEV_PM_DOMAIN_DETACH if fun dev_pm_domain_detach absent in include/linux/pm_domain.h include/linux/pm.h
Expand Down
34 changes: 34 additions & 0 deletions auxiliary/src/kcompat.c
Original file line number Diff line number Diff line change
Expand Up @@ -2697,3 +2697,37 @@ void pci_disable_ptm(struct pci_dev *dev)
#endif /* HAVE_STRUCT_PCI_DEV_PTM_ENABLED && CONFIG_PCIE_PTM */
}
#endif /* NEED_PCI_DISABLE_PTM */

#ifndef HAVE_RESOURCE_SET_SIZE
/**
* resource_set_size - Calculate resource end address from size and start
* @res: Resource descriptor
* @size: Size of the resource
*
* Calculate the end address for @res based on @size.
*
* Note: The start address of @res must be set when calling this function.
* Prefer resource_set_range() if setting both the start address and @size.
*/
void resource_set_size(struct resource *res, resource_size_t size)
{
res->end = res->start + size - 1;
}
#endif /* !HAVE_RESOURCE_SET_SIZE */

#ifndef HAVE_RESOURCE_SET_RANGE
/**
* resource_set_range - Set resource start and end addresses
* @res: Resource descriptor
* @start: Start address for the resource
* @size: Size of the resource
*
* Set @res start address and calculate the end address based on @size.
*/
void resource_set_range(struct resource *res, resource_size_t start,
resource_size_t size)
{
res->start = start;
resource_set_size(res, size);
}
#endif /* !HAVE_RESOURCE_SET_RANGE */
2 changes: 1 addition & 1 deletion auxiliary/src/kcompat.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
/* any of the features that need to alter module_init */
#if !defined(HAVE_XARRAY_API)

static int __init kc_module_init_impl(void)
static inline int __init kc_module_init_impl(void)
{
#ifdef HAVE_XARRAY_API
#else
Expand Down
42 changes: 39 additions & 3 deletions auxiliary/src/kcompat_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -3414,6 +3414,18 @@ enum dpll_lock_status_error {
#define dpll_netdev_pin_clear netdev_dpll_pin_clear
#endif /* NEED_DPLL_NETDEV_PIN_SET */

#ifdef NEED_DPLL_TRACKER
#ifdef CONFIG_DPLL
#include <linux/dpll.h>
#define dpll_device_get(clock_id, device_idx, module, tracker) \
dpll_device_get(clock_id, device_idx, module)
#define dpll_device_put(dpll, tracker) dpll_device_put(dpll)
#define dpll_pin_get(clock_id, pin_idx, module, prop, tracker) \
dpll_pin_get(clock_id, pin_idx, module, prop)
#define dpll_pin_put(pin, tracker) dpll_pin_put(pin)
#endif /* CONFIG_DPLL */
#endif /* NEED_DPLL_TRACKER */

#ifdef NEED_RADIX_TREE_EMPTY
static inline bool radix_tree_empty(struct radix_tree_root *root)
{
Expand Down Expand Up @@ -3626,12 +3638,36 @@ void _kc_eventfd_signal(struct eventfd_ctx *ctx)
#define TCP_MIN_MSS 88U
#endif

#ifdef NEED_DEFINE_SIMPLE_DEV_OPS
#define DEFINE_SIMPLE_DEV_OPS(name, suspend_fn, resume_fn) \
#ifdef NEED_DEFINE_SIMPLE_DEV_PM_OPS
#define DEFINE_SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \
SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn)
#endif /* NEED_DEFINE_SIMPLE_DEV_OPS */
#endif /* NEED_DEFINE_SIMPLE_DEV_PM_OPS */

#ifdef NEED_PM_SLEEP_PTR
#define pm_sleep_ptr(_ptr) (_ptr)
#endif /* NEED_PM_SLEEP_PTR */

#ifdef NEED_MODULE_INFO_WITHOUT_CHECK
/* upstream commit ae83f3b72621 ("module: Add compile-time check for embedded
* NUL characters") added an assert preventing embedding dishonest licenses,
* like "GPL\0, but proprietary for XXX part". Unfortunately __builtin_strlen()
* used does not work in some of our CI builds, so just remove that (essentially
* "reverting" the upstream commit).
*/
#include <linux/moduleparam.h>
#undef MODULE_INFO
#define MODULE_INFO(tag, info) \
static const char __UNIQUE_ID(modinfo)[] \
__used __section(".modinfo") __aligned(1) \
= __MODULE_INFO_PREFIX __stringify(tag) "=" info
#endif /* NEED_MODULE_INFO_WITHOUT_CHECK */

#ifndef HAVE_RESOURCE_SET_SIZE
void resource_set_size(struct resource *res, resource_size_t size);
#endif /* !HAVE_RESOURCE_SET_SIZE */
#ifndef HAVE_RESOURCE_SET_RANGE
void resource_set_range(struct resource *res, resource_size_t start,
resource_size_t size);
#endif /* !HAVE_RESOURCE_SET_RANGE */

#endif /* _KCOMPAT_IMPL_H_ */
Loading