Commit 2c744a27 authored by Federico Vaga's avatar Federico Vaga

Merge branch 'release/v2.0.2' into master

parents 577b31c8 10c42950
......@@ -2,6 +2,12 @@
Change Log
==========
2.0.2 - 2021-03-16
==================
Changed
-------
- sw: better version validation implementation
2.0.1 - 2021-02-08
==================
Added
......
......@@ -10,10 +10,10 @@ endif
VER_MAJ := $(shell echo $(subst v,,$(VERSION)) | cut -d '.' -f 1)
VER_MIN := $(shell echo $(subst v,,$(VERSION)) | cut -d '.' -f 2)
SVEC_META_VERSION_COMPAT := $(shell printf "0x%02x%02x0000" $(VER_MAJ) $(VER_MIN))
SVEC_VERSION_BLD := $(shell printf "0x%02x%02x0000" $(VER_MAJ) $(VER_MIN))
ccflags-y += -DADDITIONAL_VERSIONS="$(SUBMODULE_VERSIONS)"
ccflags-y += -DVERSION=\"$(VERSION)\"
ccflags-y += -DSVEC_META_VERSION_COMPAT=$(SVEC_META_VERSION_COMPAT)
ccflags-y += -DSVEC_VERSION_BLD=$(SVEC_VERSION_BLD)
ccflags-y += -Wall -Werror
ccflags-y += -I$(VMEBRIDGE_ABS)/include
......
......@@ -810,6 +810,17 @@ static void svec_fpga_app_exit(struct svec_fpga *svec_fpga)
}
}
static bool svec_fpga_is_valid_version(uint32_t expected, uint32_t found)
{
if (version_ignore)
return true;
if (SVEC_VERSION_MAJ(found) != SVEC_VERSION_MAJ(expected))
return false;
if (SVEC_VERSION_MIN(found) < SVEC_VERSION_MIN(expected))
return false;
return true;
}
static bool svec_fpga_is_valid(struct svec_dev *svec_dev,
struct svec_meta_id *meta)
{
......@@ -835,15 +846,13 @@ static bool svec_fpga_is_valid(struct svec_dev *svec_dev,
return false;
}
if (!version_ignore &&
(meta->version & SVEC_META_VERSION_MASK) != SVEC_META_VERSION_COMPAT) {
if (!svec_fpga_is_valid_version(SVEC_VERSION_DRV, meta->version)) {
dev_err(&svec_dev->dev,
"Unknow version: %08x, expected: %08x\n",
meta->version, SVEC_META_VERSION_COMPAT);
"Invalid version: %08x, expected: %08x\n",
meta->version, SVEC_VERSION_DRV);
return false;
}
return true;
}
......
......@@ -123,6 +123,11 @@ struct svec_dev {
struct svec_fpga *svec_fpga;
};
#define SVEC_VERSION_DRV SVEC_VERSION_BLD
#define SVEC_VERSION_MAJ(_VER) ((_VER >> 24) & 0xFF)
#define SVEC_VERSION_MIN(_VER) ((_VER >> 16) & 0xFF)
#define SVEC_VERSION_PATCH(_VER) (_VER & 0xFFFF)
static inline struct svec_dev *to_svec_dev(struct device *_dev)
{
return container_of(_dev, struct svec_dev, dev);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment