From f9653cbaac1bcb7fd15c83858f117c419ed59847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20=C5=A0tetiar?= Date: Mon, 9 Jan 2023 10:49:35 +0100 Subject: [PATCH 01/17] ci: show_build_failures: fix missing output for configure failures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We're currently missing log output in cases where `configure` fails which returns 77 as its error code: make[3]: *** [Makefile:118: elfutils-0.188/.configured_889556d2f423f99e091beece9c8d870a] Error 77 So lets adjust the regexps so they can handle multiple digits. Signed-off-by: Petr Štetiar --- .github/workflows/scripts/show_build_failures.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scripts/show_build_failures.sh b/.github/workflows/scripts/show_build_failures.sh index 14f699c93d..7b1a021155 100755 --- a/.github/workflows/scripts/show_build_failures.sh +++ b/.github/workflows/scripts/show_build_failures.sh @@ -5,9 +5,9 @@ log_dir_path="${1:-logs}" context="${2:-10}" show_make_build_errors() { - grep -slr 'make\[[[:digit:]]\].*Error [[:digit:]]$' "$log_dir_path" | while IFS= read -r log_file; do + grep -slr 'make\[[[:digit:]]\+\].*Error [[:digit:]]\+$' "$log_dir_path" | while IFS= read -r log_file; do printf "====== Make errors from %s ======\n" "$log_file"; - grep -r -C"$context" 'make\[[[:digit:]]\].*Error [[:digit:]]$' "$log_file" ; + grep -r -C"$context" 'make\[[[:digit:]]\+\].*Error [[:digit:]]\+$' "$log_file" ; done } From d6a284e4cea46129a18542c6f23309b7bf1af174 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 8 Jan 2023 20:38:40 +0100 Subject: [PATCH 02/17] ucode: update to the latest version 34cfbb922c96 README.md: various spelling and documentation fixes ff32355ea645 build: make rtnl/nl80211 depend on linux instead of !APPLE c0e413c21f7b include: add uc_fn_thisval() 1e4d20932646 Merge pull request #134 from nbd168/thisval Signed-off-by: Felix Fietkau --- package/utils/ucode/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/utils/ucode/Makefile b/package/utils/ucode/Makefile index fafc449090..228403e041 100644 --- a/package/utils/ucode/Makefile +++ b/package/utils/ucode/Makefile @@ -12,9 +12,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=https://github.com/jow-/ucode.git -PKG_SOURCE_DATE:=2022-12-02 -PKG_SOURCE_VERSION:=46d93c9cc5da6fce581df86159bd0fc4357de41c -PKG_MIRROR_HASH:=970a47f1bef719f056d40d17398db492bd4de92b98ef9aba4582cb18b4c9b270 +PKG_SOURCE_DATE:=2023-01-07 +PKG_SOURCE_VERSION:=1e4d20932646f90523d21ea358c72901e3ee689e +PKG_MIRROR_HASH:=8c43b9a0a80c3de92961caad65c934bd3989e6f7f9389f676d91e2e926c9e4a6 PKG_MAINTAINER:=Jo-Philipp Wich PKG_LICENSE:=ISC From 0cc1c302b188f905ccf081d8f3984cee27bd7524 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 8 Jan 2023 20:40:40 +0100 Subject: [PATCH 03/17] ucode-mod-bpf: add new package for a ucode libbpf binding The bpf plugin provides functionality for loading and interacting with eBPF modules. It allows loading full modules and pinned maps/programs and supports interacting with maps and attaching programs as tc classifiers. Signed-off-by: Felix Fietkau --- package/utils/ucode-mod-bpf/Makefile | 40 ++ package/utils/ucode-mod-bpf/src/bpf.c | 814 ++++++++++++++++++++++++++ 2 files changed, 854 insertions(+) create mode 100644 package/utils/ucode-mod-bpf/Makefile create mode 100644 package/utils/ucode-mod-bpf/src/bpf.c diff --git a/package/utils/ucode-mod-bpf/Makefile b/package/utils/ucode-mod-bpf/Makefile new file mode 100644 index 0000000000..a748b9dbbd --- /dev/null +++ b/package/utils/ucode-mod-bpf/Makefile @@ -0,0 +1,40 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ucode-mod-bpf +PKG_RELEASE:=1 +PKG_LICENSE:=ISC +PKG_MAINTAINER:=Felix Fietkau + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk + +define Package/ucode-mod-bpf + SECTION:=utils + CATEGORY:=Utilities + TITLE:=ucode eBPF module + DEPENDS:=+libucode +libbpf +endef + +define Package/ucode-mod-bpf/description +The bpf plugin provides functionality for loading and interacting with +eBPF modules. + +It allows loading full modules and pinned maps/programs and supports +interacting with maps and attaching programs as tc classifiers. +endef + +define Package/ucode-mod-bpf/install + $(INSTALL_DIR) $(1)/usr/lib/ucode + $(CP) $(PKG_BUILD_DIR)/bpf.so $(1)/usr/lib/ucode/ +endef + +define Build/Configure +endef + +define Build/Compile + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(FPIC) \ + -Wall -ffunction-sections -Wl,--gc-sections -shared -Wl,--no-as-needed -lbpf \ + -o $(PKG_BUILD_DIR)/bpf.so $(PKG_BUILD_DIR)/bpf.c +endef + +$(eval $(call BuildPackage,ucode-mod-bpf)) diff --git a/package/utils/ucode-mod-bpf/src/bpf.c b/package/utils/ucode-mod-bpf/src/bpf.c new file mode 100644 index 0000000000..415215e54e --- /dev/null +++ b/package/utils/ucode-mod-bpf/src/bpf.c @@ -0,0 +1,814 @@ +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "ucode/module.h" + +#define err_return_int(err, ...) do { set_error(err, __VA_ARGS__); return -1; } while(0) +#define err_return(err, ...) do { set_error(err, __VA_ARGS__); return NULL; } while(0) +#define TRUE ucv_boolean_new(true) + +static uc_resource_type_t *module_type, *map_type, *map_iter_type, *program_type; +static uc_value_t *registry; +static uc_vm_t *debug_vm; + +static struct { + int code; + char *msg; +} last_error; + +struct uc_bpf_fd { + int fd; + bool close; +}; + +struct uc_bpf_map { + struct uc_bpf_fd fd; /* must be first */ + unsigned int key_size, val_size; +}; + +struct uc_bpf_map_iter { + int fd; + unsigned int key_size; + bool has_next; + uint8_t key[]; +}; + +__attribute__((format(printf, 2, 3))) static void +set_error(int errcode, const char *fmt, ...) +{ + va_list ap; + + free(last_error.msg); + + last_error.code = errcode; + last_error.msg = NULL; + + if (fmt) { + va_start(ap, fmt); + xvasprintf(&last_error.msg, fmt, ap); + va_end(ap); + } +} + +static void init_env(void) +{ + static bool init_done = false; + struct rlimit limit = { + .rlim_cur = RLIM_INFINITY, + .rlim_max = RLIM_INFINITY, + }; + + if (init_done) + return; + + setrlimit(RLIMIT_MEMLOCK, &limit); + init_done = true; +} + +static uc_value_t * +uc_bpf_error(uc_vm_t *vm, size_t nargs) +{ + uc_value_t *numeric = uc_fn_arg(0); + const char *msg = last_error.msg; + int code = last_error.code; + uc_stringbuf_t *buf; + const char *s; + + if (last_error.code == 0) + return NULL; + + set_error(0, NULL); + + if (ucv_is_truish(numeric)) + return ucv_int64_new(code); + + buf = ucv_stringbuf_new(); + if (code < 0 && msg) { + ucv_stringbuf_addstr(buf, msg, strlen(msg)); + } else { + s = strerror(code); + ucv_stringbuf_addstr(buf, s, strlen(s)); + if (msg) + ucv_stringbuf_printf(buf, ": %s", msg); + } + + return ucv_stringbuf_finish(buf); +} + +static int +uc_bpf_module_set_opts(struct bpf_object *obj, uc_value_t *opts) +{ + uc_value_t *val; + + if (!opts) + return 0; + + if (ucv_type(opts) != UC_OBJECT) + err_return_int(EINVAL, "options argument"); + + if ((val = ucv_object_get(opts, "rodata", NULL)) != NULL) { + struct bpf_map *map = NULL; + + if (ucv_type(val) != UC_STRING) + err_return_int(EINVAL, "rodata type"); + + while ((map = bpf_object__next_map(obj, map)) != NULL) { + if (!strstr(bpf_map__name(map), ".rodata")) + continue; + + break; + } + + if (!map) + err_return_int(errno, "rodata map"); + + if (bpf_map__set_initial_value(map, ucv_string_get(val), + ucv_string_length(val))) + err_return_int(errno, "rodata"); + } + + if ((val = ucv_object_get(opts, "program-type", NULL)) != NULL) { + if (ucv_type(val) != UC_OBJECT) + err_return_int(EINVAL, "prog_types argument"); + + ucv_object_foreach(val, name, type) { + struct bpf_program *prog; + + if (ucv_type(type) != UC_INTEGER) + err_return_int(EINVAL, "program %s type", name); + + prog = bpf_object__find_program_by_name(obj, name); + if (!prog) + err_return_int(-1, "program %s not found", name); + + bpf_program__set_type(prog, ucv_int64_get(type)); + } + } + + return 0; +} + +static uc_value_t * +uc_bpf_open_module(uc_vm_t *vm, size_t nargs) +{ + DECLARE_LIBBPF_OPTS(bpf_object_open_opts, bpf_opts); + uc_value_t *path = uc_fn_arg(0); + uc_value_t *opts = uc_fn_arg(1); + struct bpf_object *obj; + + if (ucv_type(path) != UC_STRING) + err_return(EINVAL, "module path"); + + init_env(); + obj = bpf_object__open_file(ucv_string_get(path), &bpf_opts); + if (libbpf_get_error(obj)) + err_return(errno, NULL); + + if (uc_bpf_module_set_opts(obj, opts)) { + bpf_object__close(obj); + return NULL; + } + + if (bpf_object__load(obj)) { + bpf_object__close(obj); + err_return(errno, NULL); + } + + return uc_resource_new(module_type, obj); +} + +static uc_value_t * +uc_bpf_map_create(int fd, unsigned int key_size, unsigned int val_size, bool close) +{ + struct uc_bpf_map *uc_map; + + uc_map = xalloc(sizeof(*uc_map)); + uc_map->fd.fd = fd; + uc_map->key_size = key_size; + uc_map->val_size = val_size; + uc_map->fd.close = close; + + return uc_resource_new(map_type, uc_map); +} + +static uc_value_t * +uc_bpf_open_map(uc_vm_t *vm, size_t nargs) +{ + struct bpf_map_info info; + uc_value_t *path = uc_fn_arg(0); + __u32 len = sizeof(info); + int err; + int fd; + + if (ucv_type(path) != UC_STRING) + err_return(EINVAL, "module path"); + + fd = bpf_obj_get(ucv_string_get(path)); + if (fd < 0) + err_return(errno, NULL); + + err = bpf_obj_get_info_by_fd(fd, &info, &len); + if (err) { + close(fd); + err_return(errno, NULL); + } + + return uc_bpf_map_create(fd, info.key_size, info.value_size, true); +} + +static uc_value_t * +uc_bpf_open_program(uc_vm_t *vm, size_t nargs) +{ + uc_value_t *path = uc_fn_arg(0); + struct uc_bpf_fd *f; + int fd; + + if (ucv_type(path) != UC_STRING) + err_return(EINVAL, "module path"); + + fd = bpf_obj_get(ucv_string_get(path)); + if (fd < 0) + err_return(errno, NULL); + + f = xalloc(sizeof(*f)); + f->fd = fd; + f->close = true; + + return uc_resource_new(program_type, f); +} + +static uc_value_t * +uc_bpf_module_get_maps(uc_vm_t *vm, size_t nargs) +{ + struct bpf_object *obj = uc_fn_thisval("bpf.module"); + struct bpf_map *map = NULL; + uc_value_t *rv; + int i = 0; + + if (!obj) + err_return(EINVAL, NULL); + + rv = ucv_array_new(vm); + bpf_object__for_each_map(map, obj) + ucv_array_set(rv, i++, ucv_string_new(bpf_map__name(map))); + + return rv; +} + +static uc_value_t * +uc_bpf_module_get_map(uc_vm_t *vm, size_t nargs) +{ + struct bpf_object *obj = uc_fn_thisval("bpf.module"); + struct bpf_map *map; + uc_value_t *name = uc_fn_arg(0); + int fd; + + if (!obj || ucv_type(name) != UC_STRING) + err_return(EINVAL, NULL); + + map = bpf_object__find_map_by_name(obj, ucv_string_get(name)); + if (!map) + err_return(errno, NULL); + + fd = bpf_map__fd(map); + if (fd < 0) + err_return(EINVAL, NULL); + + return uc_bpf_map_create(fd, bpf_map__key_size(map), bpf_map__value_size(map), false); +} + +static uc_value_t * +uc_bpf_module_get_programs(uc_vm_t *vm, size_t nargs) +{ + struct bpf_object *obj = uc_fn_thisval("bpf.module"); + struct bpf_program *prog = NULL; + uc_value_t *rv; + int i = 0; + + if (!obj) + err_return(EINVAL, NULL); + + rv = ucv_array_new(vm); + bpf_object__for_each_program(prog, obj) + ucv_array_set(rv, i++, ucv_string_new(bpf_program__name(prog))); + + return rv; +} + +static uc_value_t * +uc_bpf_module_get_program(uc_vm_t *vm, size_t nargs) +{ + struct bpf_object *obj = uc_fn_thisval("bpf.module"); + struct bpf_program *prog; + uc_value_t *name = uc_fn_arg(0); + struct uc_bpf_fd *f; + int fd; + + if (!obj || !name || ucv_type(name) != UC_STRING) + err_return(EINVAL, NULL); + + prog = bpf_object__find_program_by_name(obj, ucv_string_get(name)); + if (!prog) + err_return(errno, NULL); + + fd = bpf_program__fd(prog); + if (fd < 0) + err_return(EINVAL, NULL); + + f = xalloc(sizeof(*f)); + f->fd = fd; + + return uc_resource_new(program_type, f); +} + +static void * +uc_bpf_map_arg(uc_value_t *val, const char *kind, unsigned int size) +{ + static union { + uint32_t u32; + uint64_t u64; + } val_int; + + switch (ucv_type(val)) { + case UC_INTEGER: + if (size == 4) + val_int.u32 = ucv_int64_get(val); + else if (size == 8) + val_int.u64 = ucv_int64_get(val); + else + break; + + return &val_int; + case UC_STRING: + if (size != ucv_string_length(val)) + break; + + return ucv_string_get(val); + default: + err_return(EINVAL, "%s type", kind); + } + + err_return(EINVAL, "%s size mismatch (expected: %d)", kind, size); +} + +static uc_value_t * +uc_bpf_map_get(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); + uc_value_t *a_key = uc_fn_arg(0); + void *key, *val; + + if (!map) + err_return(EINVAL, NULL); + + key = uc_bpf_map_arg(a_key, "key", map->key_size); + if (!key) + return NULL; + + val = alloca(map->val_size); + if (bpf_map_lookup_elem(map->fd.fd, key, val)) + return NULL; + + return ucv_string_new_length(val, map->val_size); +} + +static uc_value_t * +uc_bpf_map_set(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); + uc_value_t *a_key = uc_fn_arg(0); + uc_value_t *a_val = uc_fn_arg(1); + uc_value_t *a_flags = uc_fn_arg(2); + uint64_t flags; + void *key, *val; + + if (!map) + err_return(EINVAL, NULL); + + key = uc_bpf_map_arg(a_key, "key", map->key_size); + if (!key) + return NULL; + + val = uc_bpf_map_arg(a_val, "value", map->val_size); + if (!val) + return NULL; + + if (!a_flags) + flags = BPF_ANY; + else if (ucv_type(a_flags) != UC_INTEGER) + err_return(EINVAL, "flags"); + else + flags = ucv_int64_get(a_flags); + + if (bpf_map_update_elem(map->fd.fd, key, val, flags)) + return NULL; + + return ucv_string_new_length(val, map->val_size); +} + +static uc_value_t * +uc_bpf_map_delete(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); + uc_value_t *a_key = uc_fn_arg(0); + uc_value_t *a_return = uc_fn_arg(1); + void *key, *val = NULL; + int ret; + + if (!map) + err_return(EINVAL, NULL); + + key = uc_bpf_map_arg(a_key, "key", map->key_size); + if (!key) + return NULL; + + if (!ucv_is_truish(a_return)) { + ret = bpf_map_delete_elem(map->fd.fd, key); + + return ucv_boolean_new(ret == 0); + } + + val = alloca(map->val_size); + if (bpf_map_lookup_and_delete_elem(map->fd.fd, key, val)) + return NULL; + + return ucv_string_new_length(val, map->val_size); +} + +static uc_value_t * +uc_bpf_map_delete_all(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); + uc_value_t *filter = uc_fn_arg(0); + bool has_next; + void *key, *next; + + if (!map) + err_return(EINVAL, NULL); + + key = alloca(map->key_size); + next = alloca(map->key_size); + has_next = !bpf_map_get_next_key(map->fd.fd, NULL, next); + while (has_next) { + bool skip = false; + + memcpy(key, next, map->key_size); + has_next = !bpf_map_get_next_key(map->fd.fd, next, next); + + if (ucv_is_callable(filter)) { + uc_value_t *rv; + + uc_value_push(ucv_get(filter)); + uc_value_push(ucv_string_new_length((const char *)key, map->key_size)); + if (uc_call(1) != EXCEPTION_NONE) + break; + + rv = uc_vm_stack_pop(vm); + if (!rv) + break; + + skip = !ucv_is_truish(rv); + ucv_put(rv); + } + + if (!skip) + bpf_map_delete_elem(map->fd.fd, key); + } + + return TRUE; +} + +static uc_value_t * +uc_bpf_map_iterator(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); + struct uc_bpf_map_iter *iter; + + if (!map) + err_return(EINVAL, NULL); + + iter = xalloc(sizeof(*iter) + map->key_size); + iter->fd = map->fd.fd; + iter->key_size = map->key_size; + iter->has_next = !bpf_map_get_next_key(iter->fd, NULL, &iter->key); + + return uc_resource_new(map_iter_type, iter); +} + +static uc_value_t * +uc_bpf_map_iter_next(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map_iter *iter = uc_fn_thisval("bpf.map_iter"); + uc_value_t *rv; + + if (!iter->has_next) + return NULL; + + rv = ucv_string_new_length((const char *)iter->key, iter->key_size); + iter->has_next = !bpf_map_get_next_key(iter->fd, &iter->key, &iter->key); + + return rv; +} + +static uc_value_t * +uc_bpf_map_iter_next_int(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map_iter *iter = uc_fn_thisval("bpf.map_iter"); + uint64_t intval; + uc_value_t *rv; + + if (!iter->has_next) + return NULL; + + if (iter->key_size == 4) + intval = *(uint32_t *)iter->key; + else if (iter->key_size == 8) + intval = *(uint64_t *)iter->key; + else + return NULL; + + rv = ucv_int64_new(intval); + iter->has_next = !bpf_map_get_next_key(iter->fd, &iter->key, &iter->key); + + return rv; +} + +static uc_value_t * +uc_bpf_map_foreach(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_map *map = uc_fn_thisval("bpf.map"); + uc_value_t *func = uc_fn_arg(0); + bool has_next; + void *key, *next; + bool ret = false; + + key = alloca(map->key_size); + next = alloca(map->key_size); + has_next = !bpf_map_get_next_key(map->fd.fd, NULL, next); + + while (has_next) { + uc_value_t *rv; + bool stop; + + memcpy(key, next, map->key_size); + has_next = !bpf_map_get_next_key(map->fd.fd, next, next); + + uc_value_push(ucv_get(func)); + uc_value_push(ucv_string_new_length((const char *)key, map->key_size)); + + if (uc_call(1) != EXCEPTION_NONE) + break; + + rv = uc_vm_stack_pop(vm); + stop = (ucv_type(rv) == UC_BOOLEAN && !ucv_boolean_get(rv)); + ucv_put(rv); + + if (stop) + break; + + ret = true; + } + + return ucv_boolean_new(ret); +} + +static uc_value_t * +uc_bpf_obj_pin(uc_vm_t *vm, size_t nargs, const char *type) +{ + struct uc_bpf_fd *f = uc_fn_thisval(type); + uc_value_t *path = uc_fn_arg(0); + + if (ucv_type(path) != UC_STRING) + err_return(EINVAL, NULL); + + if (bpf_obj_pin(f->fd, ucv_string_get(path))) + err_return(errno, NULL); + + return TRUE; +} + +static uc_value_t * +uc_bpf_program_pin(uc_vm_t *vm, size_t nargs) +{ + return uc_bpf_obj_pin(vm, nargs, "bpf.program"); +} + +static uc_value_t * +uc_bpf_map_pin(uc_vm_t *vm, size_t nargs) +{ + return uc_bpf_obj_pin(vm, nargs, "bpf.map"); +} + +static uc_value_t * +uc_bpf_set_tc_hook(uc_value_t *ifname, uc_value_t *type, uc_value_t *prio, + int fd) +{ + DECLARE_LIBBPF_OPTS(bpf_tc_hook, hook); + DECLARE_LIBBPF_OPTS(bpf_tc_opts, attach_tc, + .handle = 1); + const char *type_str; + uint64_t prio_val; + + if (ucv_type(ifname) != UC_STRING || ucv_type(type) != UC_STRING || + ucv_type(prio) != UC_INTEGER) + err_return(EINVAL, NULL); + + prio_val = ucv_int64_get(prio); + if (prio_val > 0xffff) + err_return(EINVAL, NULL); + + type_str = ucv_string_get(type); + if (!strcmp(type_str, "ingress")) + hook.attach_point = BPF_TC_INGRESS; + else if (!strcmp(type_str, "egress")) + hook.attach_point = BPF_TC_EGRESS; + else + err_return(EINVAL, NULL); + + hook.ifindex = if_nametoindex(ucv_string_get(ifname)); + if (!hook.ifindex) + goto error; + + bpf_tc_hook_create(&hook); + attach_tc.priority = prio_val; + if (bpf_tc_detach(&hook, &attach_tc) < 0 && fd < 0) + goto error; + + if (fd < 0) + goto out; + + attach_tc.prog_fd = fd; + if (bpf_tc_attach(&hook, &attach_tc) < 0) + goto error; + +out: + return TRUE; + +error: + if (fd >= 0) + err_return(ENOENT, NULL); + return NULL; +} + +static uc_value_t * +uc_bpf_program_tc_attach(uc_vm_t *vm, size_t nargs) +{ + struct uc_bpf_fd *f = uc_fn_thisval("bpf.program"); + uc_value_t *ifname = uc_fn_arg(0); + uc_value_t *type = uc_fn_arg(1); + uc_value_t *prio = uc_fn_arg(2); + + if (!f) + err_return(EINVAL, NULL); + + return uc_bpf_set_tc_hook(ifname, type, prio, f->fd); +} + +static uc_value_t * +uc_bpf_tc_detach(uc_vm_t *vm, size_t nargs) +{ + uc_value_t *ifname = uc_fn_arg(0); + uc_value_t *type = uc_fn_arg(1); + uc_value_t *prio = uc_fn_arg(2); + + return uc_bpf_set_tc_hook(ifname, type, prio, -1); +} + +static int +uc_bpf_debug_print(enum libbpf_print_level level, const char *format, + va_list args) +{ + char buf[256], *str = NULL; + uc_value_t *val; + va_list ap; + int size; + + va_copy(ap, args); + size = vsnprintf(buf, sizeof(buf), format, ap); + va_end(ap); + + if (size > 0 && (unsigned long)size < ARRAY_SIZE(buf) - 1) { + val = ucv_string_new(buf); + goto out; + } + + if (vasprintf(&str, format, args) < 0) + return 0; + + val = ucv_string_new(str); + free(str); + +out: + uc_vm_stack_push(debug_vm, ucv_get(ucv_array_get(registry, 0))); + uc_vm_stack_push(debug_vm, ucv_int64_new(level)); + uc_vm_stack_push(debug_vm, val); + if (uc_vm_call(debug_vm, false, 2) == EXCEPTION_NONE) + ucv_put(uc_vm_stack_pop(debug_vm)); + + return 0; +} + +static uc_value_t * +uc_bpf_set_debug_handler(uc_vm_t *vm, size_t nargs) +{ + uc_value_t *handler = uc_fn_arg(0); + + if (handler && !ucv_is_callable(handler)) + err_return(EINVAL, NULL); + + debug_vm = vm; + libbpf_set_print(handler ? uc_bpf_debug_print : NULL); + + ucv_array_set(registry, 0, ucv_get(handler)); + + return NULL; +} + +static void +register_constants(uc_vm_t *vm, uc_value_t *scope) +{ +#define ADD_CONST(x) ucv_object_add(scope, #x, ucv_int64_new(x)) + ADD_CONST(BPF_PROG_TYPE_SCHED_CLS); + ADD_CONST(BPF_PROG_TYPE_SCHED_ACT); + + ADD_CONST(BPF_ANY); + ADD_CONST(BPF_NOEXIST); + ADD_CONST(BPF_EXIST); + ADD_CONST(BPF_F_LOCK); +} + +static const uc_function_list_t module_fns[] = { + { "get_map", uc_bpf_module_get_map }, + { "get_maps", uc_bpf_module_get_maps }, + { "get_programs", uc_bpf_module_get_programs }, + { "get_program", uc_bpf_module_get_program }, +}; + +static void module_free(void *ptr) +{ + struct bpf_object *obj = ptr; + + bpf_object__close(obj); +} + +static const uc_function_list_t map_fns[] = { + { "pin", uc_bpf_map_pin }, + { "get", uc_bpf_map_get }, + { "set", uc_bpf_map_set }, + { "delete", uc_bpf_map_delete }, + { "delete_all", uc_bpf_map_delete_all }, + { "foreach", uc_bpf_map_foreach }, + { "iterator", uc_bpf_map_iterator }, +}; + +static void uc_bpf_fd_free(void *ptr) +{ + struct uc_bpf_fd *f = ptr; + + if (f->close) + close(f->fd); + free(f); +} + +static const uc_function_list_t map_iter_fns[] = { + { "next", uc_bpf_map_iter_next }, + { "next_int", uc_bpf_map_iter_next_int }, +}; + +static const uc_function_list_t prog_fns[] = { + { "pin", uc_bpf_program_pin }, + { "tc_attach", uc_bpf_program_tc_attach }, +}; + +static const uc_function_list_t global_fns[] = { + { "error", uc_bpf_error }, + { "set_debug_handler", uc_bpf_set_debug_handler }, + { "open_module", uc_bpf_open_module }, + { "open_map", uc_bpf_open_map }, + { "open_program", uc_bpf_open_program }, + { "tc_detach", uc_bpf_tc_detach }, +}; + +void uc_module_init(uc_vm_t *vm, uc_value_t *scope) +{ + uc_function_list_register(scope, global_fns); + register_constants(vm, scope); + + registry = ucv_array_new(vm); + uc_vm_registry_set(vm, "bpf.registry", registry); + + module_type = uc_type_declare(vm, "bpf.module", module_fns, module_free); + map_type = uc_type_declare(vm, "bpf.map", map_fns, uc_bpf_fd_free); + map_iter_type = uc_type_declare(vm, "bpf.map_iter", map_iter_fns, free); + program_type = uc_type_declare(vm, "bpf.program", prog_fns, uc_bpf_fd_free); +} From 55f93085bbac1d22a786f9aa39d200e61892cb06 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Mon, 9 Jan 2023 17:30:42 +0200 Subject: [PATCH 04/17] qoriq: drop unused kernel config While switching qoriq to kernel 5.15, the config for kernel 5.10 was left behind. Drop it. Fixes: 230f2fccd14e ("qoriq: switch to kernel 5.15") Signed-off-by: Stijn Tintel --- target/linux/qoriq/config-5.10 | 384 --------------------------------- 1 file changed, 384 deletions(-) delete mode 100644 target/linux/qoriq/config-5.10 diff --git a/target/linux/qoriq/config-5.10 b/target/linux/qoriq/config-5.10 deleted file mode 100644 index c40f2b3084..0000000000 --- a/target/linux/qoriq/config-5.10 +++ /dev/null @@ -1,384 +0,0 @@ -CONFIG_64BIT=y -CONFIG_ALTIVEC=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y -CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y -CONFIG_ARCH_MMAP_RND_BITS=18 -CONFIG_ARCH_MMAP_RND_BITS_MAX=32 -CONFIG_ARCH_MMAP_RND_BITS_MIN=18 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17 -CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y -CONFIG_ASN1=y -CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y -CONFIG_AUDIT_ARCH=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_MQ_PCI=y -CONFIG_BLK_PM=y -CONFIG_BLK_SCSI_REQUEST=y -CONFIG_BOOKE=y -CONFIG_BOOKE_WDT=y -CONFIG_CLKDEV_LOOKUP=y -CONFIG_CLK_QORIQ=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_CLZ_TAB=y -CONFIG_COMMON_CLK=y -# CONFIG_COMPAT_32BIT_TIME is not set -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_CORENET_GENERIC=y -# CONFIG_CPUFREQ_DT is not set -CONFIG_CPU_BIG_ENDIAN=y -CONFIG_CPU_FREQ=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set -CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_ATTR_SET=y -CONFIG_CPU_FREQ_GOV_COMMON=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -# CONFIG_CPU_FREQ_STAT is not set -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_TEO=y -CONFIG_CPU_ISOLATION=y -CONFIG_CPU_RMAP=y -CONFIG_CRC16=y -CONFIG_CRYPTO_AUTHENC=y -CONFIG_CRYPTO_BLAKE2S=y -CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_CRC32C=y -# CONFIG_CRYPTO_CRC32C_VPMSUM is not set -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_DEV_FSL_CAAM=y -CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=y -CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API_DESC=y -CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON=y -CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=y -CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC=y -CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_QI=y -# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set -# CONFIG_CRYPTO_DEV_FSL_CAAM_INTC is not set -CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y -CONFIG_CRYPTO_DEV_FSL_CAAM_PKC_API=y -CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9 -CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y -# CONFIG_CRYPTO_DEV_NX is not set -CONFIG_CRYPTO_ECB=y -CONFIG_CRYPTO_ENGINE=y -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y -CONFIG_CRYPTO_LIB_DES=y -CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 -# CONFIG_CRYPTO_MD5_PPC is not set -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RSA=y -# CONFIG_CRYPTO_SHA1_PPC is not set -CONFIG_CRYPTO_XTS=y -CONFIG_DATA_SHIFT=12 -CONFIG_DEFAULT_UIMAGE=y -CONFIG_DMADEVICES=y -CONFIG_DMA_ENGINE=y -CONFIG_DMA_OF=y -CONFIG_DMA_OPS=y -CONFIG_DMA_OPS_BYPASS=y -CONFIG_DTC=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_DYNAMIC_DEBUG=y -CONFIG_E500=y -# CONFIG_E5500_CPU is not set -CONFIG_E6500_CPU=y -CONFIG_EARLY_PRINTK=y -CONFIG_EDAC=y -CONFIG_EDAC_ATOMIC_SCRUB=y -# CONFIG_EDAC_CPC925 is not set -# CONFIG_EDAC_DEBUG is not set -CONFIG_EDAC_LEGACY_SYSFS=y -CONFIG_EDAC_MPC85XX=y -CONFIG_EDAC_SUPPORT=y -CONFIG_EPAPR_PARAVIRT=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_F2FS_FS=y -CONFIG_FIXED_PHY=y -CONFIG_FORCE_MAX_ZONEORDER=13 -# CONFIG_FSL_BMAN_TEST is not set -CONFIG_FSL_CORENET_CF=y -CONFIG_FSL_CORENET_RCPM=y -CONFIG_FSL_DMA=y -CONFIG_FSL_DPAA=y -# CONFIG_FSL_DPAA_CHECKING is not set -CONFIG_FSL_DPAA_ETH=y -CONFIG_FSL_EMB_PERFMON=y -CONFIG_FSL_FMAN=y -CONFIG_FSL_GUTS=y -CONFIG_FSL_IFC=y -CONFIG_FSL_LBC=y -CONFIG_FSL_MPIC_TIMER_WAKEUP=y -CONFIG_FSL_PAMU=y -CONFIG_FSL_PCI=y -# CONFIG_FSL_QMAN_TEST is not set -CONFIG_FSL_SOC=y -CONFIG_FSL_SOC_BOOKE=y -CONFIG_FSL_XGMAC_MDIO=y -CONFIG_FS_IOMAP=y -CONFIG_FS_MBCACHE=y -CONFIG_FS_POSIX_ACL=y -CONFIG_FTL=y -CONFIG_FUNCTION_ERROR_INJECTION=y -CONFIG_FW_LOADER_PAGED_BUF=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -CONFIG_GENERIC_CMOS_UPDATE=y -# CONFIG_GENERIC_CPU is not set -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_CPU_VULNERABILITIES=y -CONFIG_GENERIC_EARLY_IOREMAP=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_ISA_DMA=y -CONFIG_GENERIC_MSI_IRQ=y -CONFIG_GENERIC_MSI_IRQ_DOMAIN=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_GENERIC_PHY=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_TIME_VSYSCALL=y -# CONFIG_GEN_RTC is not set -# CONFIG_GIANFAR is not set -CONFIG_GLOB=y -CONFIG_GPIO_GENERIC=y -CONFIG_GPIO_MPC8XXX=y -CONFIG_GRO_CELLS=y -# CONFIG_HANGCHECK_TIMER is not set -CONFIG_HAS_DMA=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HWMON=y -CONFIG_HW_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_MPC=y -CONFIG_ILLEGAL_POINTER_VALUE=0x5deadbeef0000000 -CONFIG_INITRAMFS_SOURCE="" -CONFIG_INPUT=y -CONFIG_IOMMU_API=y -# CONFIG_IOMMU_DEBUGFS is not set -CONFIG_IOMMU_HELPER=y -CONFIG_IOMMU_SUPPORT=y -CONFIG_IRQCHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_IRQ_WORK=y -CONFIG_ISA_DMA_API=y -CONFIG_JBD2=y -CONFIG_JUMP_LABEL=y -CONFIG_JUMP_LABEL_FEATURE_CHECKS=y -# CONFIG_JUMP_LABEL_FEATURE_CHECK_DEBUG is not set -CONFIG_KALLSYMS=y -CONFIG_KERNEL_GZIP=y -CONFIG_KERNEL_START=0xc000000000000000 -CONFIG_KPROBES=y -CONFIG_KRETPROBES=y -CONFIG_LIBFDT=y -CONFIG_LOCK_DEBUGGING_SUPPORT=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_MARVELL_PHY=y -CONFIG_MATH_EMULATION=y -# CONFIG_MATH_EMULATION_FULL is not set -CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y -CONFIG_MDIO_BUS=y -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_DEVRES=y -CONFIG_MEMFD_CREATE=y -CONFIG_MEMORY=y -CONFIG_MIGRATION=y -CONFIG_MMC=y -CONFIG_MMC_BLOCK=y -CONFIG_MMC_DEBUG=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_IO_ACCESSORS=y -CONFIG_MMC_SDHCI_OF_ESDHC=y -# CONFIG_MMC_SDHCI_PCI is not set -CONFIG_MMC_SDHCI_PLTFM=y -# CONFIG_MMC_WBSD is not set -CONFIG_MMIOWB=y -CONFIG_MMU_GATHER_PAGE_SIZE=y -CONFIG_MODULES_USE_ELF_RELA=y -CONFIG_MPIC=y -CONFIG_MPIC_MSGR=y -CONFIG_MPIC_TIMER=y -CONFIG_MPILIB=y -CONFIG_MTD_NAND_CORE=y -CONFIG_MTD_NAND_ECC=y -CONFIG_MTD_NAND_ECC_SW_HAMMING=y -CONFIG_MTD_NAND_FSL_IFC=y -CONFIG_MTD_PHYSMAP=y -CONFIG_MTD_RAW_NAND=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y -CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y -CONFIG_NEED_SG_DMA_LENGTH=y -CONFIG_NET_DEVLINK=y -CONFIG_NET_DSA=y -CONFIG_NET_DSA_MV88E6XXX=y -CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y -CONFIG_NET_DSA_TAG_DSA=y -CONFIG_NET_DSA_TAG_EDSA=y -CONFIG_NET_DSA_TAG_OCELOT=y -CONFIG_NET_DSA_TAG_TRAILER=y -CONFIG_NET_FLOW_LIMIT=y -CONFIG_NET_SWITCHDEV=y -CONFIG_NLS=y -CONFIG_NO_HZ_COMMON=y -CONFIG_NO_HZ_IDLE=y -CONFIG_NR_CPUS=24 -CONFIG_NR_IRQS=512 -CONFIG_OF=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_DMA_DEFAULT_COHERENT=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_FLATTREE=y -CONFIG_OF_GPIO=y -CONFIG_OF_IOMMU=y -CONFIG_OF_IRQ=y -CONFIG_OF_KOBJ=y -CONFIG_OF_MDIO=y -CONFIG_OF_NET=y -CONFIG_OLD_SIGSUSPEND=y -CONFIG_OPTPROBES=y -CONFIG_PACKING=y -CONFIG_PADATA=y -CONFIG_PAGE_OFFSET=0xc000000000000000 -CONFIG_PCI=y -CONFIG_PCI_DOMAINS=y -CONFIG_PCI_MSI=y -CONFIG_PCI_MSI_ARCH_FALLBACKS=y -CONFIG_PCI_MSI_IRQ_DOMAIN=y -CONFIG_PGTABLE_LEVELS=4 -CONFIG_PHYLIB=y -CONFIG_PHYLINK=y -CONFIG_PHYSICAL_START=0x00000000 -CONFIG_PHYS_64BIT=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_PM=y -# CONFIG_PMU_SYSFS is not set -CONFIG_PM_CLK=y -CONFIG_PPC=y -CONFIG_PPC64=y -CONFIG_PPC_ADV_DEBUG_DACS=2 -CONFIG_PPC_ADV_DEBUG_DVCS=0 -CONFIG_PPC_ADV_DEBUG_IACS=2 -CONFIG_PPC_ADV_DEBUG_REGS=y -CONFIG_PPC_BARRIER_NOSPEC=y -CONFIG_PPC_BOOK3E=y -CONFIG_PPC_BOOK3E_64=y -CONFIG_PPC_BOOK3E_MMU=y -# CONFIG_PPC_BOOK3S_64 is not set -CONFIG_PPC_DAWR=y -CONFIG_PPC_DOORBELL=y -CONFIG_PPC_E500MC=y -# CONFIG_PPC_EARLY_DEBUG is not set -CONFIG_PPC_EPAPR_HV_PIC=y -CONFIG_PPC_FPU=y -CONFIG_PPC_FSL_BOOK3E=y -CONFIG_PPC_INDIRECT_PCI=y -# CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set -CONFIG_PPC_MMU_NOHASH=y -CONFIG_PPC_MSI_BITMAP=y -CONFIG_PPC_OF_BOOT_TRAMPOLINE=y -CONFIG_PPC_PAGE_SHIFT=12 -# CONFIG_PPC_PTDUMP is not set -# CONFIG_PPC_QEMU_E500 is not set -CONFIG_PPC_QUEUED_SPINLOCKS=y -CONFIG_PPC_SMP_MUXED_IPI=y -CONFIG_PPC_UDBG_16550=y -CONFIG_PPC_WERROR=y -CONFIG_PPS=y -CONFIG_PTE_64BIT=y -CONFIG_QORIQ_CPUFREQ=y -CONFIG_QORIQ_THERMAL=y -CONFIG_QUEUED_RWLOCKS=y -CONFIG_QUEUED_SPINLOCKS=y -CONFIG_RAS=y -CONFIG_RATIONAL=y -# CONFIG_RAVE_SP_CORE is not set -CONFIG_REGMAP=y -CONFIG_REGMAP_MMIO=y -CONFIG_RFS_ACCEL=y -CONFIG_RPS=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -# CONFIG_SCOM_DEBUGFS is not set -CONFIG_SCSI=y -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_FSL=y -CONFIG_SERIAL_8250_NR_UARTS=4 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4 -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_DEV_BUS=y -CONFIG_SERIAL_DEV_CTRL_TTYPORT=y -CONFIG_SERIAL_FSL_LINFLEXUART=y -CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y -CONFIG_SERIAL_FSL_LPUART=y -CONFIG_SERIAL_FSL_LPUART_CONSOLE=y -CONFIG_SERIAL_MCTRL_GPIO=y -CONFIG_SG_POOL=y -CONFIG_SLUB_DEBUG=y -CONFIG_SMP=y -CONFIG_SOC_BUS=y -CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y -CONFIG_SPARSE_IRQ=y -CONFIG_SPI=y -CONFIG_SPI_FSL_ESPI=y -CONFIG_SPI_MASTER=y -CONFIG_SRCU=y -CONFIG_SWIOTLB=y -CONFIG_SWPHY=y -CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_TARGET_CPU_BOOL=y -CONFIG_THERMAL=y -CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y -CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 -CONFIG_THERMAL_GOV_STEP_WISE=y -CONFIG_THERMAL_OF=y -CONFIG_THREAD_INFO_IN_TASK=y -CONFIG_THREAD_SHIFT=14 -CONFIG_TREE_RCU=y -CONFIG_TREE_SRCU=y -# CONFIG_UACCE is not set -# CONFIG_UCLAMP_TASK is not set -CONFIG_USB=y -CONFIG_USB_COMMON=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_EHCI_HCD=y -# CONFIG_USB_EHCI_HCD_PLATFORM is not set -CONFIG_USB_STORAGE=y -CONFIG_USB_SUPPORT=y -CONFIG_USB_UAS=y -CONFIG_VGA_CONSOLE=y -CONFIG_VIRT_CPU_ACCOUNTING=y -CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -# CONFIG_VT_HW_CONSOLE_BINDING is not set -CONFIG_WATCHDOG_CORE=y -# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set -CONFIG_XPS=y -CONFIG_ZLIB_DEFLATE=y From f1aa8f34ffe3af1bd922ca8e92f8726dd883b7f9 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Mon, 9 Jan 2023 17:24:21 +0200 Subject: [PATCH 05/17] sunxi: switch to kernel 5.15 The testing kernel has been available since early 2022, and is running fine for several people. Let's switch to it by default. Signed-off-by: Stijn Tintel Tested-by: Karl Palsson Tested-by: Jan-Niklas Burfeind --- target/linux/sunxi/Makefile | 3 +- target/linux/sunxi/config-5.10 | 511 ------------------ .../062-add-sun8i-h3-zeropi-support.patch | 79 --- ...0-sunxi-h3-add-support-for-nanopi-r1.patch | 186 ------- ...nxi-h5-add-support-for-nanopi-r1s-h5.patch | 230 -------- ...OF-node-for-USB-eth-on-NanoPi-R1S-H5.patch | 30 - ...angepi_pc2_usb_otg_to_host_key_power.patch | 20 - ...a64-sopine-Add-Sopine-flash-partitio.patch | 46 -- ...ner-a64-olinuxino-add-status-LED-ali.patch | 32 -- ...lwinner-nanopi-r1s-h5-add-status-LED.patch | 35 -- ...m64-dts-orangepi-one-plus-enable-PWM.patch | 10 - ...m64-dts-enable-wifi-on-pine64-boards.patch | 72 --- 12 files changed, 1 insertion(+), 1253 deletions(-) delete mode 100644 target/linux/sunxi/config-5.10 delete mode 100644 target/linux/sunxi/patches-5.10/062-add-sun8i-h3-zeropi-support.patch delete mode 100644 target/linux/sunxi/patches-5.10/100-sunxi-h3-add-support-for-nanopi-r1.patch delete mode 100644 target/linux/sunxi/patches-5.10/101-sunxi-h5-add-support-for-nanopi-r1s-h5.patch delete mode 100644 target/linux/sunxi/patches-5.10/102-sunxi-add-OF-node-for-USB-eth-on-NanoPi-R1S-H5.patch delete mode 100644 target/linux/sunxi/patches-5.10/301-orangepi_pc2_usb_otg_to_host_key_power.patch delete mode 100644 target/linux/sunxi/patches-5.10/400-arm64-allwinner-a64-sopine-Add-Sopine-flash-partitio.patch delete mode 100644 target/linux/sunxi/patches-5.10/430-arm64-dts-allwinner-a64-olinuxino-add-status-LED-ali.patch delete mode 100644 target/linux/sunxi/patches-5.10/431-arm64-dts-allwinner-nanopi-r1s-h5-add-status-LED.patch delete mode 100644 target/linux/sunxi/patches-5.10/442-arm64-dts-orangepi-one-plus-enable-PWM.patch delete mode 100644 target/linux/sunxi/patches-5.10/450-arm64-dts-enable-wifi-on-pine64-boards.patch diff --git a/target/linux/sunxi/Makefile b/target/linux/sunxi/Makefile index 2a031c2df1..7a2b8af05a 100644 --- a/target/linux/sunxi/Makefile +++ b/target/linux/sunxi/Makefile @@ -10,8 +10,7 @@ BOARDNAME:=Allwinner A1x/A20/A3x/H3/H5/R40 FEATURES:=fpu usb ext4 display rootfs-part rtc squashfs SUBTARGETS:=cortexa8 cortexa7 cortexa53 -KERNEL_PATCHVER:=5.10 -KERNEL_TESTING_PATCHVER:=5.15 +KERNEL_PATCHVER:=5.15 KERNELNAME:=zImage dtbs diff --git a/target/linux/sunxi/config-5.10 b/target/linux/sunxi/config-5.10 deleted file mode 100644 index caac9e1436..0000000000 --- a/target/linux/sunxi/config-5.10 +++ /dev/null @@ -1,511 +0,0 @@ -# CONFIG_AHCI_SUNXI is not set -CONFIG_ALIGNMENT_TRAP=y -CONFIG_ARCH_32BIT_OFF_T=y -CONFIG_ARCH_DMA_ADDR_T_64BIT=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y -CONFIG_ARCH_MULTIPLATFORM=y -CONFIG_ARCH_MULTI_V6_V7=y -CONFIG_ARCH_MULTI_V7=y -CONFIG_ARCH_NR_GPIO=416 -CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y -CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SUNXI=y -CONFIG_ARCH_SUNXI_MC_SMP=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARM=y -# CONFIG_ARM_ALLWINNER_SUN50I_CPUFREQ_NVMEM is not set -CONFIG_ARM_APPENDED_DTB=y -CONFIG_ARM_ARCH_TIMER=y -CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -CONFIG_ARM_ATAG_DTB_COMPAT=y -CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y -CONFIG_ARM_CCI=y -CONFIG_ARM_CCI400_COMMON=y -CONFIG_ARM_CCI400_PORT_CTRL=y -CONFIG_ARM_CPU_SUSPEND=y -CONFIG_ARM_CRYPTO=y -CONFIG_ARM_ERRATA_643719=y -CONFIG_ARM_GIC=y -CONFIG_ARM_HAS_SG_CHAIN=y -CONFIG_ARM_HEAVY_MB=y -CONFIG_ARM_L1_CACHE_SHIFT=6 -CONFIG_ARM_L1_CACHE_SHIFT_6=y -CONFIG_ARM_LPAE=y -CONFIG_ARM_PATCH_IDIV=y -CONFIG_ARM_PATCH_PHYS_VIRT=y -CONFIG_ARM_PSCI=y -CONFIG_ARM_PSCI_FW=y -CONFIG_ARM_THUMB=y -CONFIG_ARM_UNWIND=y -CONFIG_ARM_VIRT_EXT=y -CONFIG_ATA=y -CONFIG_ATAGS=y -CONFIG_AUTO_ZRELADDR=y -CONFIG_AXP20X_POWER=y -CONFIG_BACKLIGHT_CLASS_DEVICE=y -CONFIG_BACKLIGHT_PWM=y -CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_PM=y -CONFIG_BLK_SCSI_REQUEST=y -CONFIG_BOUNCE=y -CONFIG_CACHE_L2X0=y -CONFIG_CAN=y -CONFIG_CLKDEV_LOOKUP=y -CONFIG_CLKSRC_MMIO=y -CONFIG_CLK_SUNXI=y -CONFIG_CLK_SUNXI_CLOCKS=y -CONFIG_CLK_SUNXI_PRCM_SUN6I=y -CONFIG_CLK_SUNXI_PRCM_SUN8I=y -CONFIG_CLK_SUNXI_PRCM_SUN9I=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_COMMON_CLK=y -CONFIG_COMPAT_32BIT_TIME=y -CONFIG_CONFIGFS_FS=y -CONFIG_CONNECTOR=y -CONFIG_CONSOLE_TRANSLATIONS=y -CONFIG_COREDUMP=y -CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y -CONFIG_CPUFREQ_DT=y -CONFIG_CPUFREQ_DT_PLATDEV=y -CONFIG_CPU_32v6K=y -CONFIG_CPU_32v7=y -CONFIG_CPU_ABRT_EV7=y -CONFIG_CPU_CACHE_V7=y -CONFIG_CPU_CACHE_VIPT=y -CONFIG_CPU_COPY_V6=y -CONFIG_CPU_CP15=y -CONFIG_CPU_CP15_MMU=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_ATTR_SET=y -CONFIG_CPU_FREQ_GOV_COMMON=y -CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_USERSPACE=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_HAS_ASID=y -CONFIG_CPU_PABRT_V7=y -CONFIG_CPU_PM=y -CONFIG_CPU_RMAP=y -CONFIG_CPU_SPECTRE=y -CONFIG_CPU_THERMAL=y -CONFIG_CPU_THUMB_CAPABLE=y -CONFIG_CPU_TLB_V7=y -CONFIG_CPU_V7=y -CONFIG_CRC16=y -CONFIG_CRC_T10DIF=y -CONFIG_CRYPTO_CRC32=y -CONFIG_CRYPTO_CRC32C=y -CONFIG_CRYPTO_CRCT10DIF=y -CONFIG_CRYPTO_CRCT10DIF_ARM_CE=y -CONFIG_CRYPTO_DES=y -CONFIG_CRYPTO_DEV_ALLWINNER=y -CONFIG_CRYPTO_DEV_SUN4I_SS=y -CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG=y -# CONFIG_CRYPTO_DEV_SUN8I_CE is not set -# CONFIG_CRYPTO_DEV_SUN8I_SS is not set -CONFIG_CRYPTO_HW=y -CONFIG_CRYPTO_LIB_DES=y -CONFIG_CRYPTO_MD5=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_SHA1=y -CONFIG_DCACHE_WORD_ACCESS=y -CONFIG_DEBUG_BUGVERBOSE=y -CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" -CONFIG_DEBUG_MEMORY_INIT=y -CONFIG_DMADEVICES=y -CONFIG_DMA_ENGINE=y -CONFIG_DMA_OF=y -CONFIG_DMA_OPS=y -CONFIG_DMA_REMAP=y -CONFIG_DMA_SUN4I=y -CONFIG_DMA_SUN6I=y -CONFIG_DMA_VIRTUAL_CHANNELS=y -CONFIG_DNOTIFY=y -CONFIG_DTC=y -CONFIG_DUMMY_CONSOLE=y -CONFIG_DVB_CORE=y -CONFIG_DWMAC_GENERIC=y -# CONFIG_DWMAC_SUN8I is not set -CONFIG_DWMAC_SUNXI=y -CONFIG_DYNAMIC_DEBUG=y -CONFIG_EDAC_ATOMIC_SCRUB=y -CONFIG_EDAC_SUPPORT=y -CONFIG_ELF_CORE=y -CONFIG_ENABLE_MUST_CHECK=y -CONFIG_EXT4_FS=y -CONFIG_EXTCON=y -CONFIG_F2FS_FS=y -CONFIG_FAT_FS=y -CONFIG_FB=y -CONFIG_FB_CFB_COPYAREA=y -CONFIG_FB_CFB_FILLRECT=y -CONFIG_FB_CFB_IMAGEBLIT=y -CONFIG_FB_CMDLINE=y -CONFIG_FB_FOREIGN_ENDIAN=y -CONFIG_FB_LITTLE_ENDIAN=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_SIMPLE=y -CONFIG_FB_TILEBLITTING=y -CONFIG_FIXED_PHY=y -CONFIG_FIX_EARLYCON_MEM=y -CONFIG_FONT_8x16=y -CONFIG_FONT_8x8=y -CONFIG_FONT_SUPPORT=y -CONFIG_FRAMEBUFFER_CONSOLE=y -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y -CONFIG_FRAME_WARN=2048 -CONFIG_FREEZER=y -CONFIG_FS_IOMAP=y -CONFIG_FS_MBCACHE=y -CONFIG_FS_POSIX_ACL=y -CONFIG_FW_CACHE=y -CONFIG_FW_LOADER_PAGED_BUF=y -CONFIG_GENERIC_ALLOCATOR=y -CONFIG_GENERIC_ARCH_TOPOLOGY=y -CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y -CONFIG_GENERIC_CPU_AUTOPROBE=y -CONFIG_GENERIC_EARLY_IOREMAP=y -CONFIG_GENERIC_GETTIMEOFDAY=y -CONFIG_GENERIC_IDLE_POLL_SETUP=y -CONFIG_GENERIC_IRQ_CHIP=y -CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y -CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_IRQ_SHOW_LEVEL=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_GENERIC_PHY=y -CONFIG_GENERIC_PINCONF=y -CONFIG_GENERIC_PINCTRL_GROUPS=y -CONFIG_GENERIC_PINMUX_FUNCTIONS=y -CONFIG_GENERIC_SCHED_CLOCK=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GENERIC_STRNCPY_FROM_USER=y -CONFIG_GENERIC_STRNLEN_USER=y -CONFIG_GENERIC_TIME_VSYSCALL=y -CONFIG_GENERIC_VDSO_32=y -CONFIG_GLOB=y -CONFIG_HANDLE_DOMAIN_IRQ=y -CONFIG_HARDEN_BRANCH_PREDICTOR=y -CONFIG_HARDIRQS_SW_RESEND=y -CONFIG_HAS_DMA=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAVE_SMP=y -CONFIG_HIGHMEM=y -CONFIG_HIGHPTE=y -CONFIG_HOTPLUG_CPU=y -CONFIG_HWMON=y -CONFIG_HW_CONSOLE=y -CONFIG_HW_RANDOM=y -CONFIG_HW_RANDOM_TIMERIOMEM=y -CONFIG_HZ_FIXED=0 -CONFIG_I2C=y -CONFIG_I2C_BOARDINFO=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_COMPAT=y -CONFIG_I2C_HELPER_AUTO=y -CONFIG_I2C_MV64XXX=y -CONFIG_I2C_SUN6I_P2WI=y -CONFIG_IIO=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_INPUT=y -CONFIG_INPUT_AXP20X_PEK=y -CONFIG_INPUT_KEYBOARD=y -CONFIG_INPUT_MOUSEDEV=y -CONFIG_INPUT_MOUSEDEV_PSAUX=y -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_IRQCHIP=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_DOMAIN_HIERARCHY=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_IRQ_WORK=y -CONFIG_JBD2=y -CONFIG_KALLSYMS=y -CONFIG_KEYBOARD_SUN4I_LRADC=y -CONFIG_KSM=y -CONFIG_LCD_CLASS_DEVICE=y -CONFIG_LCD_PLATFORM=y -CONFIG_LEDS_GPIO=y -CONFIG_LIBFDT=y -CONFIG_LOCK_DEBUGGING_SUPPORT=y -CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_LOGO=y -CONFIG_LOGO_LINUX_CLUT224=y -CONFIG_LOGO_LINUX_MONO=y -CONFIG_LOGO_LINUX_VGA16=y -CONFIG_MACH_SUN4I=y -CONFIG_MACH_SUN5I=y -CONFIG_MACH_SUN6I=y -CONFIG_MACH_SUN7I=y -CONFIG_MACH_SUN8I=y -CONFIG_MACH_SUN9I=y -CONFIG_MAGIC_SYSRQ=y -CONFIG_MDIO_BUS=y -CONFIG_MDIO_DEVICE=y -CONFIG_MDIO_DEVRES=y -CONFIG_MDIO_SUN4I=y -CONFIG_MEDIA_ANALOG_TV_SUPPORT=y -CONFIG_MEDIA_ATTACH=y -CONFIG_MEDIA_CAMERA_SUPPORT=y -CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y -CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_RADIO_SUPPORT=y -CONFIG_MEDIA_SDR_SUPPORT=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_TEST_SUPPORT=y -CONFIG_MEDIA_TUNER=y -CONFIG_MEMFD_CREATE=y -CONFIG_MFD_AXP20X=y -CONFIG_MFD_AXP20X_I2C=y -CONFIG_MFD_AXP20X_RSB=y -CONFIG_MFD_CORE=y -CONFIG_MFD_SUN6I_PRCM=y -CONFIG_MFD_SYSCON=y -CONFIG_MIGHT_HAVE_CACHE_L2X0=y -CONFIG_MIGRATION=y -CONFIG_MMC=y -CONFIG_MMC_BLOCK=y -CONFIG_MMC_SUNXI=y -CONFIG_MODULES_USE_ELF_REL=y -CONFIG_MTD_JEDECPROBE=y -CONFIG_MTD_SPI_NOR=y -CONFIG_MTD_SPLIT_FIT_FW=y -CONFIG_MUTEX_SPIN_ON_OWNER=y -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEON=y -CONFIG_NET_FLOW_LIMIT=y -CONFIG_NET_PTP_CLASSIFY=y -CONFIG_NET_VENDOR_ALLWINNER=y -CONFIG_NLS=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NO_HZ=y -CONFIG_NO_HZ_COMMON=y -CONFIG_NO_HZ_IDLE=y -CONFIG_NR_CPUS=8 -CONFIG_NVMEM=y -CONFIG_NVMEM_SUNXI_SID=y -CONFIG_OF=y -CONFIG_OF_ADDRESS=y -CONFIG_OF_EARLY_FLATTREE=y -CONFIG_OF_FLATTREE=y -CONFIG_OF_GPIO=y -CONFIG_OF_IRQ=y -CONFIG_OF_KOBJ=y -CONFIG_OF_MDIO=y -CONFIG_OF_NET=y -CONFIG_OLD_SIGACTION=y -CONFIG_OLD_SIGSUSPEND3=y -CONFIG_OUTER_CACHE=y -CONFIG_OUTER_CACHE_SYNC=y -CONFIG_PADATA=y -CONFIG_PAGE_OFFSET=0xC0000000 -CONFIG_PAGE_POOL=y -CONFIG_PCS_XPCS=y -CONFIG_PERF_USE_VMALLOC=y -CONFIG_PGTABLE_LEVELS=3 -CONFIG_PHYLIB=y -CONFIG_PHYLINK=y -CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_PHY_SUN4I_USB=y -# CONFIG_PHY_SUN50I_USB3 is not set -# CONFIG_PHY_SUN6I_MIPI_DPHY is not set -CONFIG_PHY_SUN9I_USB=y -CONFIG_PINCTRL=y -CONFIG_PINCTRL_AXP209=y -CONFIG_PINCTRL_SUN4I_A10=y -# CONFIG_PINCTRL_SUN50I_A100 is not set -# CONFIG_PINCTRL_SUN50I_A100_R is not set -# CONFIG_PINCTRL_SUN50I_A64 is not set -# CONFIG_PINCTRL_SUN50I_A64_R is not set -# CONFIG_PINCTRL_SUN50I_H5 is not set -# CONFIG_PINCTRL_SUN50I_H6 is not set -# CONFIG_PINCTRL_SUN50I_H6_R is not set -CONFIG_PINCTRL_SUN5I=y -CONFIG_PINCTRL_SUN6I_A31=y -CONFIG_PINCTRL_SUN6I_A31_R=y -CONFIG_PINCTRL_SUN8I_A23=y -CONFIG_PINCTRL_SUN8I_A23_R=y -CONFIG_PINCTRL_SUN8I_A33=y -CONFIG_PINCTRL_SUN8I_A83T=y -CONFIG_PINCTRL_SUN8I_A83T_R=y -CONFIG_PINCTRL_SUN8I_H3=y -CONFIG_PINCTRL_SUN8I_H3_R=y -CONFIG_PINCTRL_SUN8I_V3S=y -CONFIG_PINCTRL_SUN9I_A80=y -CONFIG_PINCTRL_SUN9I_A80_R=y -CONFIG_PINCTRL_SUNXI=y -CONFIG_PM=y -CONFIG_PM_CLK=y -CONFIG_PM_OPP=y -CONFIG_PM_SLEEP=y -CONFIG_PM_SLEEP_SMP=y -CONFIG_POWER_RESET=y -CONFIG_POWER_SUPPLY=y -CONFIG_PPS=y -CONFIG_PRINTK_TIME=y -CONFIG_PROC_EVENTS=y -CONFIG_PROC_PAGE_MONITOR=y -CONFIG_PTP_1588_CLOCK=y -CONFIG_PWM=y -CONFIG_PWM_SUN4I=y -CONFIG_PWM_SYSFS=y -CONFIG_RATIONAL=y -CONFIG_REALTEK_PHY=y -CONFIG_REGMAP=y -CONFIG_REGMAP_I2C=y -CONFIG_REGMAP_IRQ=y -CONFIG_REGMAP_MMIO=y -CONFIG_REGMAP_SPI=y -CONFIG_REGULATOR=y -CONFIG_REGULATOR_AXP20X=y -CONFIG_REGULATOR_FIXED_VOLTAGE=y -CONFIG_REGULATOR_GPIO=y -CONFIG_REGULATOR_SY8106A=y -CONFIG_RELAY=y -CONFIG_RESET_CONTROLLER=y -CONFIG_RESET_SIMPLE=y -CONFIG_RESET_SUNXI=y -CONFIG_RFS_ACCEL=y -CONFIG_RPS=y -CONFIG_RWSEM_SPIN_ON_OWNER=y -CONFIG_SATA_HOST=y -CONFIG_SATA_PMP=y -CONFIG_SCSI=y -CONFIG_SDIO_UART=y -CONFIG_SECURITYFS=y -CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y -CONFIG_SERIAL_8250_DW=y -CONFIG_SERIAL_8250_DWLIB=y -CONFIG_SERIAL_8250_FSL=y -CONFIG_SERIAL_8250_NR_UARTS=8 -CONFIG_SERIAL_8250_RUNTIME_UARTS=8 -CONFIG_SERIAL_MCTRL_GPIO=y -CONFIG_SERIAL_OF_PLATFORM=y -CONFIG_SERIO=y -CONFIG_SERIO_SERPORT=y -CONFIG_SG_POOL=y -CONFIG_SMP=y -CONFIG_SMP_ON_UP=y -CONFIG_SND=y -CONFIG_SND_COMPRESS_OFFLOAD=y -CONFIG_SND_JACK=y -CONFIG_SND_JACK_INPUT_DEV=y -CONFIG_SND_PCM=y -CONFIG_SND_SIMPLE_CARD=y -CONFIG_SND_SIMPLE_CARD_UTILS=y -CONFIG_SND_SOC=y -CONFIG_SND_SOC_I2C_AND_SPI=y -# CONFIG_SND_SUN4I_I2S is not set -# CONFIG_SND_SUN4I_SPDIF is not set -# CONFIG_SND_SUN8I_CODEC is not set -# CONFIG_SND_SUN8I_CODEC_ANALOG is not set -CONFIG_SOUND=y -CONFIG_SOUND_OSS_CORE=y -CONFIG_SPARSE_IRQ=y -CONFIG_SPI=y -CONFIG_SPI_MASTER=y -CONFIG_SPI_MEM=y -CONFIG_SPI_SUN4I=y -CONFIG_SPI_SUN6I=y -CONFIG_SRCU=y -CONFIG_STMMAC_ETH=y -CONFIG_STMMAC_PLATFORM=y -# CONFIG_STMMAC_SELFTESTS is not set -CONFIG_SUN4I_A10_CCU=y -# CONFIG_SUN4I_EMAC is not set -CONFIG_SUN4I_TIMER=y -CONFIG_SUN5I_CCU=y -CONFIG_SUN5I_HSTIMER=y -CONFIG_SUN6I_A31_CCU=y -CONFIG_SUN8I_A23_CCU=y -CONFIG_SUN8I_A33_CCU=y -CONFIG_SUN8I_A83T_CCU=y -CONFIG_SUN8I_DE2_CCU=y -CONFIG_SUN8I_H3_CCU=y -CONFIG_SUN8I_R40_CCU=y -CONFIG_SUN8I_R_CCU=y -CONFIG_SUN8I_THERMAL=y -CONFIG_SUN8I_V3S_CCU=y -CONFIG_SUN9I_A80_CCU=y -CONFIG_SUNXI_CCU=y -CONFIG_SUNXI_RSB=y -CONFIG_SUNXI_SRAM=y -CONFIG_SUNXI_WATCHDOG=y -CONFIG_SUSPEND=y -CONFIG_SUSPEND_FREEZER=y -CONFIG_SWIOTLB=y -CONFIG_SWPHY=y -CONFIG_SWP_EMULATE=y -CONFIG_SYSFS_SYSCALL=y -CONFIG_SYS_SUPPORTS_APM_EMULATION=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_THERMAL=y -CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y -CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 -CONFIG_THERMAL_GOV_STEP_WISE=y -CONFIG_THERMAL_HWMON=y -CONFIG_THERMAL_OF=y -CONFIG_TICK_CPU_ACCOUNTING=y -CONFIG_TIMER_OF=y -CONFIG_TIMER_PROBE=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_TOUCHSCREEN_PROPERTIES=y -CONFIG_TOUCHSCREEN_SUN4I=y -CONFIG_TREE_RCU=y -CONFIG_TREE_SRCU=y -CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" -CONFIG_UNWINDER_ARM=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -# CONFIG_USB_AUDIO is not set -CONFIG_USB_COMMON=y -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_HCD_PLATFORM=y -CONFIG_USB_GADGET=y -CONFIG_USB_NET_DRIVERS=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_OHCI_HCD_PLATFORM=y -CONFIG_USB_ROLE_SWITCH=y -CONFIG_USB_STORAGE=y -CONFIG_USB_SUPPORT=y -CONFIG_USERIO=y -CONFIG_USE_OF=y -CONFIG_VFAT_FS=y -CONFIG_VFP=y -CONFIG_VFPv3=y -CONFIG_VHOST=y -CONFIG_VHOST_IOTLB=y -CONFIG_VHOST_NET=y -# CONFIG_VIDEO_SUN4I_CSI is not set -# CONFIG_VIDEO_SUN6I_CSI is not set -CONFIG_VM_EVENT_COUNTERS=y -CONFIG_VT=y -CONFIG_VT_CONSOLE=y -CONFIG_VT_CONSOLE_SLEEP=y -CONFIG_VT_HW_CONSOLE_BINDING=y -CONFIG_WATCHDOG_CORE=y -CONFIG_XPS=y -CONFIG_XXHASH=y -CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_BCJ=y -CONFIG_ZBOOT_ROM_BSS=0 -CONFIG_ZBOOT_ROM_TEXT=0 diff --git a/target/linux/sunxi/patches-5.10/062-add-sun8i-h3-zeropi-support.patch b/target/linux/sunxi/patches-5.10/062-add-sun8i-h3-zeropi-support.patch deleted file mode 100644 index 3dd37fedba..0000000000 --- a/target/linux/sunxi/patches-5.10/062-add-sun8i-h3-zeropi-support.patch +++ /dev/null @@ -1,79 +0,0 @@ ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -1204,6 +1204,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ - sun8i-h3-orangepi-zero-plus2.dtb \ - sun8i-h3-rervision-dvk.dtb \ - sun8i-h3-emlid-neutis-n5h3-devboard.dtb \ -+ sun8i-h3-zeropi.dtb \ - sun8i-r16-bananapi-m2m.dtb \ - sun8i-r16-nintendo-nes-classic.dtb \ - sun8i-r16-nintendo-super-nes-classic.dtb \ ---- /dev/null -+++ b/arch/arm/boot/dts/sun8i-h3-zeropi.dts -@@ -0,0 +1,66 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+ -+#include "sun8i-h3-nanopi.dtsi" -+ -+/ { -+ model = "FriendlyElec ZeroPi"; -+ compatible = "friendlyarm,zeropi", "allwinner,sun8i-h3"; -+ -+ aliases { -+ ethernet0 = &emac; -+ }; -+ -+ reg_gmac_3v3: gmac-3v3 { -+ compatible = "regulator-fixed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_power_pin_nanopi>; -+ regulator-name = "gmac-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ startup-delay-us = <100000>; -+ enable-active-high; -+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; -+ }; -+}; -+ -+&ehci0 { -+ status = "okay"; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ -+&pio { -+ gmac_power_pin_nanopi: gmac_power_pin@0 { -+ pins = "PD6"; -+ function = "gpio_out"; -+ }; -+}; -+ -+&external_mdio { -+ ext_rgmii_phy: ethernet-phy@1 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <7>; -+ }; -+}; -+ -+&emac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&emac_rgmii_pins>; -+ phy-supply = <®_gmac_3v3>; -+ phy-handle = <&ext_rgmii_phy>; -+ phy-mode = "rgmii"; -+ -+ allwinner,leds-active-low; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ status = "okay"; -+ dr_mode = "peripheral"; -+}; -+ -+&usbphy { -+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ -+}; diff --git a/target/linux/sunxi/patches-5.10/100-sunxi-h3-add-support-for-nanopi-r1.patch b/target/linux/sunxi/patches-5.10/100-sunxi-h3-add-support-for-nanopi-r1.patch deleted file mode 100644 index cbdf5ed3d4..0000000000 --- a/target/linux/sunxi/patches-5.10/100-sunxi-h3-add-support-for-nanopi-r1.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 5aee0b1272cd5b42933ef629d66b677669e2e8d2 Mon Sep 17 00:00:00 2001 -From: Jayantajit Gogoi -Date: Mon, 12 Oct 2020 05:24:51 +0000 -Subject: [PATCH] sunxi: add support for friendlyarm nanopi r1 - -Signed-off-by: Jayantajit Gogoi ---- - .../devicetree/bindings/arm/sunxi.yaml | 5 + - arch/arm/boot/dts/Makefile | 1 + - arch/arm/boot/dts/sun8i-h3-nanopi-r1.dts | 146 ++++++++++++++++++ - 3 files changed, 152 insertions(+) - create mode 100644 arch/arm/boot/dts/sun8i-h3-nanopi-r1.dts - ---- a/Documentation/devicetree/bindings/arm/sunxi.yaml -+++ b/Documentation/devicetree/bindings/arm/sunxi.yaml -@@ -251,6 +251,11 @@ properties: - - const: friendlyarm,nanopi-neo-plus2 - - const: allwinner,sun50i-h5 - -+ - description: FriendlyARM NanoPi R1 -+ items: -+ - const: friendlyarm,nanopi-r1 -+ - const: allwinner,sun8i-h3 -+ - - description: Gemei G9 Tablet - items: - - const: gemei,g9 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -1194,6 +1194,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ - sun8i-h3-nanopi-m1-plus.dtb \ - sun8i-h3-nanopi-neo.dtb \ - sun8i-h3-nanopi-neo-air.dtb \ -+ sun8i-h3-nanopi-r1.dtb \ - sun8i-h3-orangepi-2.dtb \ - sun8i-h3-orangepi-lite.dtb \ - sun8i-h3-orangepi-one.dtb \ ---- /dev/null -+++ b/arch/arm/boot/dts/sun8i-h3-nanopi-r1.dts -@@ -0,0 +1,146 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (C) 2019 Igor Pecovnik -+ * Copyright (C) 2020 Jayantajit Gogoi -+ */ -+ -+/* NanoPi R1 is based on the NanoPi-H3 design from FriendlyARM */ -+#include "sun8i-h3-nanopi.dtsi" -+ -+/ { -+ model = "FriendlyARM NanoPi R1"; -+ compatible = "friendlyarm,nanopi-r1", "allwinner,sun8i-h3"; -+ -+ reg_gmac_3v3: gmac-3v3 { -+ compatible = "regulator-fixed"; -+ regulator-name = "gmac-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ startup-delay-us = <100000>; -+ enable-active-high; -+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ vdd_cpux: gpio-regulator { -+ compatible = "regulator-gpio"; -+ pinctrl-names = "default"; -+ regulator-name = "vdd-cpux"; -+ regulator-type = "voltage"; -+ regulator-boot-on; -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-ramp-delay = <50>; -+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; -+ gpios-states = <0x1>; -+ states = <1100000 0x0 -+ 1300000 0x1>; -+ }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ pinctrl-names = "default"; -+ reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; -+ }; -+ -+ leds { -+ /delete-node/ pwr; -+ status { -+ label = "nanopi:red:status"; -+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "heartbeat"; -+ }; -+ -+ wan { -+ label = "nanopi:green:wan"; -+ gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ lan { -+ label = "nanopi:green:lan"; -+ gpios = <&pio 0 9 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ -+ r_gpio_keys { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&sw_r_npi>; -+ -+ /delete-node/ k1; -+ reset { -+ label = "reset"; -+ linux,code = ; -+ gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; -+ }; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_cpux>; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&ehci2 { -+ status = "okay"; -+}; -+ -+&emac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&emac_rgmii_pins>; -+ phy-supply = <®_gmac_3v3>; -+ phy-handle = <&ext_rgmii_phy>; -+ phy-mode = "rgmii"; -+ status = "okay"; -+}; -+ -+&external_mdio { -+ ext_rgmii_phy: ethernet-phy@1 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <7>; -+ }; -+}; -+ -+&mmc1 { -+ vmmc-supply = <®_vcc3v3>; -+ vqmmc-supply = <®_vcc3v3>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ sdio_wifi: sdio_wifi@1 { -+ reg = <1>; -+ compatible = "brcm,bcm4329-fmac"; -+ interrupt-parent = <&pio>; -+ interrupts = <6 10 IRQ_TYPE_LEVEL_LOW>; -+ interrupt-names = "host-wake"; -+ }; -+}; -+ -+&mmc2 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc2_8bit_pins>; -+ vmmc-supply = <®_vcc3v3>; -+ vqmmc-supply = <®_vcc3v3>; -+ bus-width = <8>; -+ non-removable; -+ status = "okay"; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&ohci2 { -+ status = "okay"; -+}; -+ -+&r_pio { -+ sw_r_npi: key_pins { -+ pins = "PL3"; -+ function = "gpio_in"; -+ }; -+}; diff --git a/target/linux/sunxi/patches-5.10/101-sunxi-h5-add-support-for-nanopi-r1s-h5.patch b/target/linux/sunxi/patches-5.10/101-sunxi-h5-add-support-for-nanopi-r1s-h5.patch deleted file mode 100644 index e0c25bcb53..0000000000 --- a/target/linux/sunxi/patches-5.10/101-sunxi-h5-add-support-for-nanopi-r1s-h5.patch +++ /dev/null @@ -1,230 +0,0 @@ -From 9962cb9be2db877c232aaf00db40125c0d7bf4bc Mon Sep 17 00:00:00 2001 -From: Chukun Pan -Date: Mon, 17 May 2021 00:35:22 +0800 -Subject: [PATCH] arm64: dts: allwinner: h5: Add NanoPi R1S H5 support - -The NanoPi R1S H5 is a open source board made by FriendlyElec. -It has the following features: - -- Allwinner H5, Quad-core Cortex-A53 -- 512MB DDR3 RAM -- 10/100/1000M Ethernet x 2 -- RTL8189ETV WiFi 802.11b/g/n -- USB 2.0 host port (A) -- MicroSD Slot -- Serial Debug Port -- 5V 2A DC power-supply - -Signed-off-by: Chukun Pan -Signed-off-by: Maxime Ripard -Link: https://lore.kernel.org/r/20210516163523.9484-2-amadeus@jmu.edu.cn ---- - arch/arm64/boot/dts/allwinner/Makefile | 1 + - .../dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts | 195 ++++++++++++++++++ - 2 files changed, 196 insertions(+) - create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts - ---- a/arch/arm64/boot/dts/allwinner/Makefile -+++ b/arch/arm64/boot/dts/allwinner/Makefile -@@ -24,6 +24,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-li - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-libretech-all-h5-cc.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo2.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-neo-plus2.dtb -+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi-r1s-h5.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb - dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-zero-plus.dtb ---- /dev/null -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts -@@ -0,0 +1,191 @@ -+// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -+/* -+ * Copyright (C) 2021 Chukun Pan -+ * -+ * Based on sun50i-h5-nanopi-neo-plus2.dts, which is: -+ * Copyright (C) 2017 Antony Antony -+ * Copyright (C) 2016 ARM Ltd. -+ */ -+ -+/dts-v1/; -+#include "sun50i-h5.dtsi" -+#include "sun50i-h5-cpu-opp.dtsi" -+ -+#include -+#include -+ -+/ { -+ model = "FriendlyARM NanoPi R1S H5"; -+ compatible = "friendlyarm,nanopi-r1s-h5", "allwinner,sun50i-h5"; -+ -+ aliases { -+ ethernet0 = &emac; -+ ethernet1 = &rtl8189etv; -+ serial0 = &uart0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ -+ sys { -+ label = "nanopi:red:sys"; -+ gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; -+ linux,default-trigger = "heartbeat"; -+ }; -+ -+ lan { -+ label = "nanopi:green:lan"; -+ gpios = <&pio 0 9 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ wan { -+ label = "nanopi:green:wan"; -+ gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; -+ }; -+ }; -+ -+ r-gpio-keys { -+ compatible = "gpio-keys"; -+ -+ reset { -+ label = "reset"; -+ linux,code = ; -+ gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; -+ }; -+ }; -+ -+ reg_gmac_3v3: gmac-3v3 { -+ compatible = "regulator-fixed"; -+ regulator-name = "gmac-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ startup-delay-us = <100000>; -+ enable-active-high; -+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; -+ }; -+ -+ reg_vcc3v3: vcc3v3 { -+ compatible = "regulator-fixed"; -+ regulator-name = "vcc3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ }; -+ -+ reg_usb0_vbus: usb0-vbus { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb0-vbus"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ enable-active-high; -+ gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */ -+ status = "okay"; -+ }; -+ -+ vdd_cpux: gpio-regulator { -+ compatible = "regulator-gpio"; -+ regulator-name = "vdd-cpux"; -+ regulator-type = "voltage"; -+ regulator-boot-on; -+ regulator-always-on; -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1300000>; -+ regulator-ramp-delay = <50>; /* 4ms */ -+ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; -+ gpios-states = <0x1>; -+ states = <1100000 0x0>, <1300000 0x1>; -+ }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */ -+ post-power-on-delay-ms = <200>; -+ }; -+}; -+ -+&cpu0 { -+ cpu-supply = <&vdd_cpux>; -+}; -+ -+&ehci1 { -+ status = "okay"; -+}; -+ -+&ehci2 { -+ status = "okay"; -+}; -+ -+&emac { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&emac_rgmii_pins>; -+ phy-supply = <®_gmac_3v3>; -+ phy-handle = <&ext_rgmii_phy>; -+ phy-mode = "rgmii-id"; -+ status = "okay"; -+}; -+ -+&external_mdio { -+ ext_rgmii_phy: ethernet-phy@7 { -+ compatible = "ethernet-phy-ieee802.3-c22"; -+ reg = <7>; -+ }; -+}; -+ -+&i2c0 { -+ status = "okay"; -+ -+ eeprom@51 { -+ compatible = "microchip,24c02"; -+ reg = <0x51>; -+ pagesize = <16>; -+ }; -+}; -+ -+&mmc0 { -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ -+ status = "okay"; -+}; -+ -+&mmc1 { -+ vmmc-supply = <®_vcc3v3>; -+ vqmmc-supply = <®_vcc3v3>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ rtl8189etv: sdio_wifi@1 { -+ reg = <1>; -+ }; -+}; -+ -+&ohci1 { -+ status = "okay"; -+}; -+ -+&ohci2 { -+ status = "okay"; -+}; -+ -+&uart0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pa_pins>; -+ status = "okay"; -+}; -+ -+&usb_otg { -+ dr_mode = "peripheral"; -+ status = "okay"; -+}; -+ -+&usbphy { -+ /* USB Type-A port's VBUS is always on */ -+ usb0_id_det-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */ -+ usb0_vbus-supply = <®_usb0_vbus>; -+ status = "okay"; -+}; diff --git a/target/linux/sunxi/patches-5.10/102-sunxi-add-OF-node-for-USB-eth-on-NanoPi-R1S-H5.patch b/target/linux/sunxi/patches-5.10/102-sunxi-add-OF-node-for-USB-eth-on-NanoPi-R1S-H5.patch deleted file mode 100644 index e14311aa64..0000000000 --- a/target/linux/sunxi/patches-5.10/102-sunxi-add-OF-node-for-USB-eth-on-NanoPi-R1S-H5.patch +++ /dev/null @@ -1,30 +0,0 @@ -From a896bc1d79e3c00f0aacfe225499d811775616f3 Mon Sep 17 00:00:00 2001 -From: Chukun Pan -Date: Sun, 10 Oct 2021 21:50:17 +0800 -Subject: [PATCH] arm64: allwinner: add OF node for USB eth on NanoPi R1S H5 - -This adds the OF node for the USB3 ethernet adapter on the FriendlyARM -NanoPi R1S H5. Add the correct value for the RTL8153 LED configuration -register to match the blink behavior of the other port on the device. - -Signed-off-by: Chukun Pan ---- - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts | 7 +++++++ - 1 file changed, 7 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts -@@ -112,6 +112,13 @@ - - &ehci1 { - status = "okay"; -+ -+ usb-eth@1 { -+ compatible = "realtek,rtl8153"; -+ reg = <1>; -+ -+ realtek,led-data = <0x78>; -+ }; - }; - - &ehci2 { diff --git a/target/linux/sunxi/patches-5.10/301-orangepi_pc2_usb_otg_to_host_key_power.patch b/target/linux/sunxi/patches-5.10/301-orangepi_pc2_usb_otg_to_host_key_power.patch deleted file mode 100644 index 427911c94e..0000000000 --- a/target/linux/sunxi/patches-5.10/301-orangepi_pc2_usb_otg_to_host_key_power.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts -@@ -59,7 +59,7 @@ - - sw4 { - label = "sw4"; -- linux,code = ; -+ linux,code = ; - gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; - wakeup-source; - }; -@@ -220,7 +220,7 @@ - }; - - &usb_otg { -- dr_mode = "otg"; -+ dr_mode = "host"; - status = "okay"; - }; - diff --git a/target/linux/sunxi/patches-5.10/400-arm64-allwinner-a64-sopine-Add-Sopine-flash-partitio.patch b/target/linux/sunxi/patches-5.10/400-arm64-allwinner-a64-sopine-Add-Sopine-flash-partitio.patch deleted file mode 100644 index a8dfcd9dbc..0000000000 --- a/target/linux/sunxi/patches-5.10/400-arm64-allwinner-a64-sopine-Add-Sopine-flash-partitio.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 7d87d3dafc4b1ea5659eb71ee6c5fd5308490d1f Mon Sep 17 00:00:00 2001 -From: Oskari Lemmela -Date: Mon, 31 Dec 2018 07:44:49 +0200 -Subject: [PATCH] arm64: allwinner: a64-sopine: Add Sopine flash partitions. - -First 896kB to u-boot. Enough space for SPL, u-boot and ATF. -Next 128kB to u-boot environment and rest to firmware. - -Firmware partition is compatible FIT image dynamic splitting. - -Signed-off-by: Oskari Lemmela ---- - .../boot/dts/allwinner/sun50i-a64-sopine.dtsi | 22 +++++++++++++++++++ - 1 file changed, 22 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi -@@ -58,6 +58,28 @@ - compatible = "jedec,spi-nor"; - reg = <0>; - spi-max-frequency = <40000000>; -+ -+ partitions { -+ compatible = "fixed-partitions"; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ -+ partition@0 { -+ label = "u-boot"; -+ reg = <0x000000 0x0E0000>; -+ }; -+ -+ partition@e0000 { -+ label = "u-boot-env"; -+ reg = <0x0E0000 0x020000>; -+ }; -+ -+ partition@100000 { -+ compatible = "denx,fit"; -+ label = "firmware"; -+ reg = <0x100000 0xF00000>; -+ }; -+ }; - }; - }; - diff --git a/target/linux/sunxi/patches-5.10/430-arm64-dts-allwinner-a64-olinuxino-add-status-LED-ali.patch b/target/linux/sunxi/patches-5.10/430-arm64-dts-allwinner-a64-olinuxino-add-status-LED-ali.patch deleted file mode 100644 index 68ec333e37..0000000000 --- a/target/linux/sunxi/patches-5.10/430-arm64-dts-allwinner-a64-olinuxino-add-status-LED-ali.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Petr=20=C5=A0tetiar?= -Date: Thu, 26 Mar 2020 10:09:19 +0100 -Subject: [PATCH] arm64: dts: allwinner: a64: olinuxino: add status LED aliases -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Petr Štetiar - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts -@@ -15,6 +15,10 @@ - aliases { - ethernet0 = &emac; - serial0 = &uart0; -+ led-boot = &led_user; -+ led-failsafe = &led_user; -+ led-running = &led_user; -+ led-upgrade = &led_user; - }; - - chosen { -@@ -35,7 +39,7 @@ - leds { - compatible = "gpio-leds"; - -- led-0 { -+ led_user: led-0 { - label = "a64-olinuxino:red:user"; - gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */ - }; diff --git a/target/linux/sunxi/patches-5.10/431-arm64-dts-allwinner-nanopi-r1s-h5-add-status-LED.patch b/target/linux/sunxi/patches-5.10/431-arm64-dts-allwinner-nanopi-r1s-h5-add-status-LED.patch deleted file mode 100644 index 4a429c746e..0000000000 --- a/target/linux/sunxi/patches-5.10/431-arm64-dts-allwinner-nanopi-r1s-h5-add-status-LED.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 1845163a052efac124f00656eb72f38947630a42 Mon Sep 17 00:00:00 2001 -From: Chukun Pan -Date: Sun, 10 Oct 2021 21:50:18 +0800 -Subject: [PATCH] arm64: dts: allwinner: NanoPi R1S H5: add status LED aliases - -Use the SYS LED on the casing for showing system status. - -Signed-off-by: Chukun Pan ---- - arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts | 7 ++++++- - 1 file changed, 6 insertions(+), 1 deletion(-) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi-r1s-h5.dts -@@ -22,6 +22,11 @@ - ethernet0 = &emac; - ethernet1 = &rtl8189etv; - serial0 = &uart0; -+ -+ led-boot = &led_sys; -+ led-failsafe = &led_sys; -+ led-running = &led_sys; -+ led-upgrade = &led_sys; - }; - - chosen { -@@ -31,7 +36,7 @@ - leds { - compatible = "gpio-leds"; - -- sys { -+ led_sys: sys { - label = "nanopi:red:sys"; - gpios = <&pio 0 10 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "heartbeat"; diff --git a/target/linux/sunxi/patches-5.10/442-arm64-dts-orangepi-one-plus-enable-PWM.patch b/target/linux/sunxi/patches-5.10/442-arm64-dts-orangepi-one-plus-enable-PWM.patch deleted file mode 100644 index 76a73ee1f0..0000000000 --- a/target/linux/sunxi/patches-5.10/442-arm64-dts-orangepi-one-plus-enable-PWM.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts -@@ -41,3 +41,7 @@ - reg = <1>; - }; - }; -+ -+&pwm { -+ status = "okay"; -+}; diff --git a/target/linux/sunxi/patches-5.10/450-arm64-dts-enable-wifi-on-pine64-boards.patch b/target/linux/sunxi/patches-5.10/450-arm64-dts-enable-wifi-on-pine64-boards.patch deleted file mode 100644 index 3876852c2b..0000000000 --- a/target/linux/sunxi/patches-5.10/450-arm64-dts-enable-wifi-on-pine64-boards.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts -@@ -42,6 +42,11 @@ - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ -+ }; - }; - - &ac_power_supply { -@@ -102,6 +107,21 @@ - reg = <1>; - }; - }; -+ -+&mmc1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc1_pins>; -+ vmmc-supply = <®_dldo4>; -+ vqmmc-supply = <®_eldo1>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ rtl8723cs: wifi@1 { -+ reg = <1>; -+ }; -+}; - - &mmc2 { - pinctrl-names = "default"; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -@@ -35,6 +35,11 @@ - }; - }; - }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ -+ }; - }; - - &codec { -@@ -124,6 +129,21 @@ - status = "okay"; - }; - -+&mmc1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc1_pins>; -+ vmmc-supply = <®_dldo4>; -+ vqmmc-supply = <®_eldo1>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ rtl8723cs: wifi@1 { -+ reg = <1>; -+ }; -+}; -+ - &ohci0 { - status = "okay"; - }; From 35135842ca8b633c0f8ee32b70eee92d918345d6 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Mon, 9 Jan 2023 14:23:23 +0100 Subject: [PATCH 06/17] include/prereq.mk: add RequireCHeader helper Add RequireCHeader helper that will try to compile a fake c program with the requested header included. This is useful to check if a specific header is present in the system without checking for the specific path. This is a generilized version of the current ncurses test. Signed-off-by: Christian Marangi --- include/prereq.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/prereq.mk b/include/prereq.mk index 0033535e78..d34539ec30 100644 --- a/include/prereq.mk +++ b/include/prereq.mk @@ -63,6 +63,18 @@ define RequireHeader $$(eval $$(call Require,$(1),$(2))) endef +# 1: header to test +# 2: failure message +# 3: optional compile time test +# 4: optional link library test (example -lncurses) +define RequireCHeader + define Require/$(1) + echo 'int main(int argc, char **argv) { $(3); return 0; }' | gcc -include $(1) -x c -o $(TMP_DIR)/a.out - $(4) + endef + + $$(eval $$(call Require,$(1),$(2))) +endef + define CleanupPython2 define Require/python2-cleanup if [ -f "$(STAGING_DIR_HOST)/bin/python" ] && \ From 848b3445fba43b8ae2e1a299418551d8bc8cd400 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Mon, 9 Jan 2023 18:40:00 +0100 Subject: [PATCH 07/17] prereq-build: use RequireCHeader test for ncurses prereq RequireCHeader is a generilized version of the ncurses prereq test. Use that indetad. Signed-off-by: Christian Marangi --- include/prereq-build.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 9c4ef547ad..7959890eb5 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -49,10 +49,9 @@ $(eval $(call TestHostCommand,working-g++, \ g++ -x c++ -o $(TMP_DIR)/a.out - -lstdc++ && \ $(TMP_DIR)/a.out)) -$(eval $(call TestHostCommand,ncurses, \ +$(eval $(call RequireCHeader,ncurses.h, \ Please install ncurses. (Missing libncurses.so or ncurses.h), \ - echo 'int main(int argc, char **argv) { initscr(); return 0; }' | \ - gcc -include ncurses.h -x c -o $(TMP_DIR)/a.out - -lncurses)) + initscr(), -lncurses)) $(eval $(call SetupHostCommand,git,Please install Git (git-core) >= 1.7.12.2, \ git --exec-path | xargs -I % -- grep -q -- --recursive %/git-submodule, \ From 36bc306ae61133a4e7907f0648b8cf8ad8587619 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Mon, 9 Jan 2023 14:24:49 +0100 Subject: [PATCH 08/17] prereq-build: add extra check for elfutils required header While testing tools build on an alpine image it was found that with musl libc some header are missing for elfutils tool. Add extra prereq-build check to make sure these header are present in the system to correctly compile host tools. Signed-off-by: Christian Marangi --- include/prereq-build.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 7959890eb5..7b345ebbaa 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -204,6 +204,18 @@ $(eval $(call SetupHostCommand,which,Please install 'which', \ /bin/which which, \ which which)) +$(eval $(call RequireCHeader,argp.h, \ + Missing argp.h Please install the argp-standalone package if musl libc)) + +$(eval $(call RequireCHeader,fts.h, \ + Missing fts.h Please install the musl-fts-dev package if musl libc)) + +$(eval $(call RequireCHeader,obstack.h, \ + Missing obstack.h Please install the musl-obstack-dev package if musl libc)) + +$(eval $(call RequireCHeader,libintl.h, \ + Missing libintl.h Please install the musl-libintl package if musl libc)) + $(STAGING_DIR_HOST)/bin/mkhash: $(SCRIPT_DIR)/mkhash.c mkdir -p $(dir $@) $(CC) -O2 -I$(TOPDIR)/tools/include -o $@ $< From 9988832c464054847c22188e65b22cf0f86f25e6 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Mon, 9 Jan 2023 21:19:02 +0100 Subject: [PATCH 09/17] toolchain/gcc: fix broken gcc version selection Config evaluation require default with if to be put before the generic default config with no condition. Putting the default config before any conditional default results in always selecting the non conditional one. This results in the version be hardcoded to gcc 12 even if gcc 11 is selected in the Advanced build options. Fix this by putting the gcc 12 default option as last after ANY conditional default config. Fixes: d9de5252a44e ("toolchain/gcc: switch to version 12 by default") Signed-off-by: Christian Marangi --- toolchain/gcc/Config.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolchain/gcc/Config.version b/toolchain/gcc/Config.version index 6202ca732f..7d4bedfbe9 100644 --- a/toolchain/gcc/Config.version +++ b/toolchain/gcc/Config.version @@ -4,5 +4,5 @@ config GCC_VERSION_11 config GCC_VERSION string - default "12.2.0" default "11.3.0" if GCC_VERSION_11 + default "12.2.0" From 3606fcce0ba2ede47c3fe47b0b62033df2d231dd Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 10 Nov 2022 17:44:13 +0100 Subject: [PATCH 10/17] automake: use STAGING_DIR_HOST in relocatable patch Instead of using STAGING_DIR and then go up one dir with '../' use directly STAGING_DIR_HOST env variable. This should produce cleaner symbolic links. Signed-off-by: Christian Marangi --- tools/automake/Makefile | 2 +- tools/automake/patches/000-relocatable.patch | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/automake/Makefile b/tools/automake/Makefile index a1121f1378..85ccc0ded4 100644 --- a/tools/automake/Makefile +++ b/tools/automake/Makefile @@ -25,7 +25,7 @@ HOST_CONFIGURE_VARS += \ am_cv_prog_PERL_ithreads=no define Host/Configure - (cd $(HOST_BUILD_DIR); $(AM_TOOL_PATHS) STAGING_DIR="" ./bootstrap) + (cd $(HOST_BUILD_DIR); $(AM_TOOL_PATHS) STAGING_DIR_HOST="" ./bootstrap) $(call Host/Configure/Default) endef diff --git a/tools/automake/patches/000-relocatable.patch b/tools/automake/patches/000-relocatable.patch index d05b25e61c..02382ba8c8 100644 --- a/tools/automake/patches/000-relocatable.patch +++ b/tools/automake/patches/000-relocatable.patch @@ -5,7 +5,7 @@ our $VERSION = '@VERSION@'; our $RELEASE_YEAR = '@RELEASE_YEAR@'; -our $libdir = '@datadir@/@PACKAGE@-@APIVERSION@'; -+our $libdir = $ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@'; ++our $libdir = $ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@'; our $perl_threads = 0; # We need at least this version for CLONE support. @@ -30,7 +30,7 @@ BEGIN { - @Aclocal::perl_libdirs = ('@datadir@/@PACKAGE@-@APIVERSION@') -+ @Aclocal::perl_libdirs = ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@') ++ @Aclocal::perl_libdirs = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@') unless @Aclocal::perl_libdirs; unshift @INC, @Aclocal::perl_libdirs; } @@ -40,8 +40,8 @@ my @user_includes = (); -my @automake_includes = ("@datadir@/aclocal-$APIVERSION"); -my @system_includes = ('@datadir@/aclocal'); -+my @automake_includes = ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . "/../host/share/aclocal-$APIVERSION" : "@datadir@/aclocal-$APIVERSION"); -+my @system_includes = ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/aclocal' : '@datadir@/aclocal'); ++my @automake_includes = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . "/share/aclocal-$APIVERSION" : "@datadir@/aclocal-$APIVERSION"); ++my @system_includes = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/aclocal' : '@datadir@/aclocal'); # Whether we should copy M4 file in $user_includes[0]. my $install = 0; @@ -66,7 +66,7 @@ BEGIN { - @Automake::perl_libdirs = ('@datadir@/@PACKAGE@-@APIVERSION@') -+ @Automake::perl_libdirs = ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@') ++ @Automake::perl_libdirs = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@') unless @Automake::perl_libdirs; unshift @INC, @Automake::perl_libdirs; From b344da76403a0bc01fd310bc2726842a89add146 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 10 Nov 2022 17:47:06 +0100 Subject: [PATCH 11/17] autoconf: use STAGING_DIR_HOST in relocatable patch Instead of using STAGING_DIR and then go up one dir with '../' use directly STAGING_DIR_HOST env variable. This should produce cleaner symbolic links. Signed-off-by: Christian Marangi --- tools/autoconf/patches/000-relocatable.patch | 40 ++++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tools/autoconf/patches/000-relocatable.patch b/tools/autoconf/patches/000-relocatable.patch index 12e94ae9a1..a935671ce8 100644 --- a/tools/autoconf/patches/000-relocatable.patch +++ b/tools/autoconf/patches/000-relocatable.patch @@ -6,7 +6,7 @@ { - my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; + my $pkgdatadir = $ENV{'autom4te_perllibdir'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); unshift @INC, "$pkgdatadir"; # Override SHELL. On DJGPP SHELL may not be set to a shell @@ -15,7 +15,7 @@ # Lib files. -my $autom4te = $ENV{'AUTOM4TE'} || '@bindir@/@autom4te-name@'; -+my $autom4te = $ENV{'AUTOM4TE'} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/@autom4te-name@' : '@bindir@/@autom4te-name@'); ++my $autom4te = $ENV{'AUTOM4TE'} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/@autom4te-name@' : '@bindir@/@autom4te-name@'); local $config_h; my $config_h_in; my @prepend_include; @@ -41,7 +41,7 @@ { - my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; + my $pkgdatadir = $ENV{'autom4te_perllibdir'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); unshift @INC, $pkgdatadir; # Override SHELL. On DJGPP SHELL may not be set to a shell @@ -51,7 +51,7 @@ # Data directory. -my $pkgdatadir = $ENV{'AC_MACRODIR'} || '@pkgdatadir@'; +my $pkgdatadir = $ENV{'AC_MACRODIR'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); # $LANGUAGE{LANGUAGE} -- Automatic options for LANGUAGE. my %language; @@ -60,7 +60,7 @@ # $M4. -my $m4 = $ENV{"M4"} || '@M4@'; -+my $m4 = $ENV{"M4"} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/m4' : '@M4@'); ++my $m4 = $ENV{"M4"} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/m4' : '@M4@'); # Some non-GNU m4's don't reject the --help option, so give them /dev/null. fatal "need GNU m4 1.4 or later: $m4" if system "$m4 --help &1 | grep reload-state >/dev/null"; @@ -69,9 +69,9 @@ my @words = shellwords ($_); my $type = shift @words; + -+ if ($ENV{'STAGING_DIR'}) ++ if ($ENV{'STAGING_DIR_HOST'}) + { -+ @words = map { s!^@pkgdatadir@!$ENV{'STAGING_DIR'}/../host/share/autoconf!; $_ } @words; ++ @words = map { s!^@pkgdatadir@!$ENV{'STAGING_DIR_HOST'}/share/autoconf!; $_ } @words; + } + if ($type eq 'begin-language:') @@ -99,7 +99,7 @@ { - my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; + my $pkgdatadir = $ENV{'autom4te_perllibdir'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); unshift @INC, $pkgdatadir; # Override SHELL. On DJGPP SHELL may not be set to a shell @@ -110,9 +110,9 @@ -my $autoconf = $ENV{'AUTOCONF'} || '@bindir@/@autoconf-name@'; -my $autoheader = $ENV{'AUTOHEADER'} || '@bindir@/@autoheader-name@'; -my $autom4te = $ENV{'AUTOM4TE'} || '@bindir@/@autom4te-name@'; -+my $autoconf = $ENV{'AUTOCONF'} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/@autoconf-name@' : '@bindir@/@autoconf-name@'); -+my $autoheader = $ENV{'AUTOHEADER'} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/@autoheader-name@' : '@bindir@/@autoheader-name@'); -+my $autom4te = $ENV{'AUTOM4TE'} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/@autom4te-name@' : '@bindir@/@autom4te-name@'); ++my $autoconf = $ENV{'AUTOCONF'} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/@autoconf-name@' : '@bindir@/@autoconf-name@'); ++my $autoheader = $ENV{'AUTOHEADER'} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/@autoheader-name@' : '@bindir@/@autoheader-name@'); ++my $autom4te = $ENV{'AUTOM4TE'} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/@autom4te-name@' : '@bindir@/@autom4te-name@'); my $automake = $ENV{'AUTOMAKE'} || 'automake'; my $aclocal = $ENV{'ACLOCAL'} || 'aclocal'; my $libtoolize = $ENV{'LIBTOOLIZE'} || 'libtoolize'; @@ -134,7 +134,7 @@ { - my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; + my $pkgdatadir = $ENV{'autom4te_perllibdir'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); unshift @INC, $pkgdatadir; # Override SHELL. On DJGPP SHELL may not be set to a shell @@ -143,11 +143,11 @@ # Autoconf and lib files. -my $autom4te = $ENV{'AUTOM4TE'} || '@bindir@/@autom4te-name@'; -+my $autom4te = $ENV{'AUTOM4TE'} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/@autom4te-name@' : '@bindir@/@autom4te-name@'); ++my $autom4te = $ENV{'AUTOM4TE'} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/@autom4te-name@' : '@bindir@/@autom4te-name@'); my $autoconf = "$autom4te --language=autoconf"; my @prepend_include; -my @include = ('@pkgdatadir@'); -+my @include = ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++my @include = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); # $help # ----- @@ -169,7 +169,7 @@ { - my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; + my $pkgdatadir = $ENV{'autom4te_perllibdir'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); unshift @INC, $pkgdatadir; # Override SHELL. On DJGPP SHELL may not be set to a shell @@ -178,11 +178,11 @@ # We need to find m4sugar. my @prepend_include; -my @include = ('@pkgdatadir@'); -+my @include = ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++my @include = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); my $force = 0; # m4. -my $m4 = $ENV{"M4"} || '@M4@'; -+my $m4 = $ENV{"M4"} || ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/bin/m4' : '@M4@'); ++my $m4 = $ENV{"M4"} || ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/bin/m4' : '@M4@'); # $HELP @@ -208,7 +208,7 @@ { - my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; + my $pkgdatadir = $ENV{'autom4te_perllibdir'} || -+ ($ENV{'STAGING_DIR'} ? $ENV{'STAGING_DIR'} . '/../host/share/autoconf' : '@pkgdatadir@'); ++ ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : '@pkgdatadir@'); unshift @INC, $pkgdatadir; # Override SHELL. On DJGPP SHELL may not be set to a shell @@ -219,8 +219,8 @@ # Variables. -: ${AUTOM4TE='@bindir@/@autom4te-name@'} -+if test -n "$STAGING_DIR"; then -+ : ${AUTOM4TE="$STAGING_DIR/../host/bin/@autom4te-name@"} ++if test -n "$STAGING_DIR_HOST"; then ++ : ${AUTOM4TE="$STAGING_DIR_HOST/bin/@autom4te-name@"} +else + : ${AUTOM4TE='@bindir@/@autom4te-name@'} +fi From 7b56ca399a539600090f1710f9225f706dd5b2eb Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Thu, 10 Nov 2022 17:48:54 +0100 Subject: [PATCH 12/17] libtool: use STAGING_DIR_HOST in relocatable patch Instead of using STAGING_DIR and then go up one dir with '../' use directly STAGING_DIR_HOST env variable. This should produce cleaner symbolic links. Signed-off-by: Christian Marangi --- tools/libtool/patches/000-relocatable.patch | 50 ++++++++++----------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tools/libtool/patches/000-relocatable.patch b/tools/libtool/patches/000-relocatable.patch index 6d1651be31..996e6445be 100644 --- a/tools/libtool/patches/000-relocatable.patch +++ b/tools/libtool/patches/000-relocatable.patch @@ -13,11 +13,11 @@ : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="@SED@"} -+if test -n "$STAGING_DIR"; then -+ : ${EGREP="$STAGING_DIR/../host/bin/grep -E"} -+ : ${FGREP="$STAGING_DIR/../host/bin/grep -F"} -+ : ${GREP="$STAGING_DIR/../host/bin/grep"} -+ : ${SED="$STAGING_DIR/../host/bin/sed"} ++if test -n "$STAGING_DIR_HOST"; then ++ : ${EGREP="$STAGING_DIR_HOST/bin/grep -E"} ++ : ${FGREP="$STAGING_DIR_HOST/bin/grep -F"} ++ : ${GREP="$STAGING_DIR_HOST/bin/grep"} ++ : ${SED="$STAGING_DIR_HOST/bin/sed"} +else + : ${EGREP="@EGREP@"} + : ${FGREP="@FGREP@"} @@ -42,11 +42,11 @@ : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="@SED@"} -+if test -n "$STAGING_DIR"; then -+ : ${EGREP="$STAGING_DIR/../host/bin/grep -E"} -+ : ${FGREP="$STAGING_DIR/../host/bin/grep -F"} -+ : ${GREP="$STAGING_DIR/../host/bin/grep"} -+ : ${SED="$STAGING_DIR/../host/bin/sed"} ++if test -n "$STAGING_DIR_HOST"; then ++ : ${EGREP="$STAGING_DIR_HOST/bin/grep -E"} ++ : ${FGREP="$STAGING_DIR_HOST/bin/grep -F"} ++ : ${GREP="$STAGING_DIR_HOST/bin/grep"} ++ : ${SED="$STAGING_DIR_HOST/bin/sed"} +else + : ${EGREP="@EGREP@"} + : ${FGREP="@FGREP@"} @@ -64,11 +64,11 @@ - pkgdatadir=@pkgdatadir@ - pkgltdldir=@pkgdatadir@ - aclocaldir=@aclocaldir@ -+ if test -n "$STAGING_DIR"; then -+ datadir="$STAGING_DIR/../host/share" -+ pkgdatadir="$STAGING_DIR/../host/share/libtool" -+ pkgltdldir="$STAGING_DIR/../host/share/libtool" -+ aclocaldir="$STAGING_DIR/../host/share/aclocal" ++ if test -n "$STAGING_DIR_HOST"; then ++ datadir="$STAGING_DIR_HOST/share" ++ pkgdatadir="$STAGING_DIR_HOST/share/libtool" ++ pkgltdldir="$STAGING_DIR_HOST/share/libtool" ++ aclocaldir="$STAGING_DIR_HOST/share/aclocal" + else + datadir=@datadir@ + pkgdatadir=@pkgdatadir@ @@ -88,11 +88,11 @@ - pkgdatadir=@pkgdatadir@ - pkgltdldir=@pkgdatadir@ - aclocaldir=@aclocaldir@ -+ if test -n "$STAGING_DIR"; then -+ datadir="$STAGING_DIR/../host/share" -+ pkgdatadir="$STAGING_DIR/../host/share/libtool" -+ pkgltdldir="$STAGING_DIR/../host/share/libtool" -+ aclocaldir="$STAGING_DIR/../host/share/aclocal" ++ if test -n "$STAGING_DIR_HOST"; then ++ datadir="$STAGING_DIR_HOST/share" ++ pkgdatadir="$STAGING_DIR_HOST/share/libtool" ++ pkgltdldir="$STAGING_DIR_HOST/share/libtool" ++ aclocaldir="$STAGING_DIR_HOST/share/aclocal" + else + datadir=@datadir@ + pkgdatadir=@pkgdatadir@ @@ -111,7 +111,7 @@ - _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -+_LT_DECL([LTCFLAGS], [CFLAGS], ["-O2 -I\${STAGING_DIR:-$STAGING_DIR}/../host/include"], [LTCC compiler flags])dnl ++_LT_DECL([LTCFLAGS], [CFLAGS], ["-O2 -I\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/include"], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl @@ -122,9 +122,9 @@ -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -+_LT_DECL([], [GREP], ["\${STAGING_DIR:-$STAGING_DIR}/../host/bin/grep"], [A grep program that handles long lines]) -+_LT_DECL([], [EGREP], ["\${STAGING_DIR:-$STAGING_DIR}/../host/bin/grep -E"], [An ERE matcher]) -+_LT_DECL([], [FGREP], ["\${STAGING_DIR:-$STAGING_DIR}/../host/bin/grep -F"], [A literal string matcher]) ++_LT_DECL([], [GREP], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/grep"], [A grep program that handles long lines]) ++_LT_DECL([], [EGREP], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/grep -E"], [An ERE matcher]) ++_LT_DECL([], [FGREP], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/grep -F"], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) @@ -135,7 +135,7 @@ -test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -+_LT_DECL([], [SED], ["\${STAGING_DIR:-$STAGING_DIR}/../host/bin/sed"], [A sed program that does not truncate output]) ++_LT_DECL([], [SED], ["\${STAGING_DIR_HOST:-$STAGING_DIR_HOST}/bin/sed"], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED From e854dcaef37cdb59109448889e9da9358591748a Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 2 Dec 2022 20:13:06 +0100 Subject: [PATCH 13/17] tools/mpc: use STAGING_DIR_HOST instead of hardcoding default Use STAGING_DIR_HOST to reference the staging dir for host tools instead of hardcoding it to the default location. Signed-off-by: Christian Marangi --- tools/mpc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mpc/Makefile b/tools/mpc/Makefile index 5c196a27ef..97e94291cb 100644 --- a/tools/mpc/Makefile +++ b/tools/mpc/Makefile @@ -22,8 +22,8 @@ unexport CFLAGS HOST_CONFIGURE_ARGS += \ --enable-static \ --disable-shared \ - --with-mpfr=$(TOPDIR)/staging_dir/host \ - --with-gmp=$(TOPDIR)/staging_dir/host + --with-mpfr=$(STAGING_DIR_HOST) \ + --with-gmp=$(STAGING_DIR_HOST) define Host/Uninstall -$(call Host/Compile/Default,uninstall) From 9590e1155d7a9dcfc30ba0a95ccea43698bab8cf Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 2 Dec 2022 20:31:38 +0100 Subject: [PATCH 14/17] toolchain/gcc: use STAGING_DIR_HOST instead of hardcoding default Use STAGING_DIR_HOST to reference staging host directory instead of hardcoding it to default path. Signed-off-by: Christian Marangi --- toolchain/gcc/common.mk | 8 ++++---- toolchain/gcc/final/Makefile | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk index ea2e2634b6..7eae855eea 100644 --- a/toolchain/gcc/common.mk +++ b/toolchain/gcc/common.mk @@ -72,7 +72,7 @@ ifdef CONFIG_INSTALL_GCCGO endif ifdef CONFIG_GCC_USE_GRAPHITE - GRAPHITE_CONFIGURE:= --with-isl=$(TOPDIR)/staging_dir/host + GRAPHITE_CONFIGURE:= --with-isl=$(STAGING_DIR_HOST) else GRAPHITE_CONFIGURE:= --without-isl --without-cloog endif @@ -106,9 +106,9 @@ GCC_CONFIGURE:= \ --with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))) \ $(if $(CONFIG_arc),--with-cpu=$(CONFIG_CPU_TYPE)) \ $(if $(CONFIG_powerpc64), $(if $(CONFIG_USE_MUSL),--with-abi=elfv2)) \ - --with-gmp=$(TOPDIR)/staging_dir/host \ - --with-mpfr=$(TOPDIR)/staging_dir/host \ - --with-mpc=$(TOPDIR)/staging_dir/host \ + --with-gmp=$(STAGING_DIR_HOST) \ + --with-mpfr=$(STAGING_DIR_HOST) \ + --with-mpc=$(STAGING_DIR_HOST) \ --disable-decimal-float \ --with-diagnostics-color=auto-if-env \ --enable-__cxa_atexit \ diff --git a/toolchain/gcc/final/Makefile b/toolchain/gcc/final/Makefile index 0315b9d1f1..049ddf61f0 100644 --- a/toolchain/gcc/final/Makefile +++ b/toolchain/gcc/final/Makefile @@ -9,7 +9,7 @@ GCC_CONFIGURE += \ --enable-threads \ --with-slibdir=$(TOOLCHAIN_DIR)/lib \ --enable-lto \ - --with-libelf=$(TOPDIR)/staging_dir/host + --with-libelf=$(STAGING_DIR_HOST) ifndef CONFIG_USE_GLIBC GCC_CONFIGURE += --disable-libsanitizer From d10e6591d1523738852dd0ab625df1f9ea7fc63c Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 2 Dec 2022 20:33:14 +0100 Subject: [PATCH 15/17] toolchain/gdb: use STAGING_DIR_HOST instead of hardcoding default Use STAGING_DIR_HOST to reference staging host directory instead of hardcoding it to default path. Signed-off-by: Christian Marangi --- toolchain/gdb/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/toolchain/gdb/Makefile b/toolchain/gdb/Makefile index 4587c591f4..70a4fa5902 100644 --- a/toolchain/gdb/Makefile +++ b/toolchain/gdb/Makefile @@ -30,10 +30,10 @@ HOST_CONFIGURE_ARGS = \ --build=$(GNU_HOST_NAME) \ --host=$(GNU_HOST_NAME) \ --target=$(REAL_GNU_TARGET_NAME) \ - --with-gmp=$(TOPDIR)/staging_dir/host \ - --with-mpfr=$(TOPDIR)/staging_dir/host \ - --with-mpc=$(TOPDIR)/staging_dir/host \ - --with-expat=$(TOPDIR)/staging_dir/host \ + --with-gmp=$(STAGING_DIR_HOST) \ + --with-mpfr=$(STAGING_DIR_HOST) \ + --with-mpc=$(STAGING_DIR_HOST) \ + --with-expat=$(STAGING_DIR_HOST) \ --disable-werror \ --without-uiout \ --enable-tui --disable-gdbtk --without-x \ From 2a3283643ccf77b55d67c7a3f96d40576227499c Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 2 Dec 2022 20:56:12 +0100 Subject: [PATCH 16/17] treewide: derive host and hostpkg path from STAGING_DIR STAGING_DIR may be provided from command line. We currently hardcoded STAGING_DIR_HOST and STAGING_DIR_HOSTPKG to the default location but we currently have some relocatable patch that derive the path from STAGING_DIR. Fix this and correctly derive STAGING_DIR_HOST and STAGING_DIR_HOSTPKG from STAGING_DIR. The intention is to fix inconsistency from the relocatable patch and the use of STAGING_DIR_HOST that is always hardcoded. This with a wrong configuration may end up in broken state with some host tools expecing a PATH from STAGING_DIR and others using library from the default staging_dir/host path. To save downstream project the original implementation is saved while fixing the inconsistency between patch and .mk. Signed-off-by: Christian Marangi --- Makefile | 2 +- include/scan.mk | 2 +- include/toplevel.mk | 16 ++++++++-------- rules.mk | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index cbf9fa2cd1..cff0e1d8d4 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ $(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt dir world: DISTRO_PKG_CONFIG:=$(shell $(TOPDIR)/scripts/command_all.sh pkg-config | grep '/usr' -m 1) -export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH) +export PATH:=$(if $(STAGING_DIR),$(abspath $(STAGING_DIR)/../host/bin),$(TOPDIR)/staging_dir/host/bin):$(PATH) ifneq ($(OPENWRT_BUILD),1) _SINGLE=export MAKEFLAGS=$(space); diff --git a/include/scan.mk b/include/scan.mk index 5032afa818..12ef5d1dc7 100644 --- a/include/scan.mk +++ b/include/scan.mk @@ -11,7 +11,7 @@ TARGET_STAMP:=$(TMP_DIR)/info/.files-$(SCAN_TARGET).stamp FILELIST:=$(TMP_DIR)/info/.files-$(SCAN_TARGET)-$(SCAN_COOKIE) OVERRIDELIST:=$(TMP_DIR)/info/.overrides-$(SCAN_TARGET)-$(SCAN_COOKIE) -export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH) +export PATH:=$(STAGING_DIR_HOST)/bin:$(PATH) define feedname $(if $(patsubst feeds/%,,$(1)),,$(word 2,$(subst /, ,$(1)))) diff --git a/include/toplevel.mk b/include/toplevel.mk index 455fc9c4da..2fda7ed223 100644 --- a/include/toplevel.mk +++ b/include/toplevel.mk @@ -51,22 +51,22 @@ path:=$(subst :,$(space),$(PATH)) path:=$(filter-out .%,$(path)) path:=$(subst $(space),:,$(path)) export PATH:=$(path) +export STAGING_DIR_HOST:=$(if $(STAGING_DIR),$(abspath $(STAGING_DIR)/../host),$(TOPDIR)/staging_dir/host) unexport TAR_OPTIONS ifeq ($(FORCE),) - .config scripts/config/conf scripts/config/mconf: staging_dir/host/.prereq-build + .config scripts/config/conf scripts/config/mconf: $(STAGING_DIR_HOST)/.prereq-build endif SCAN_COOKIE?=$(shell echo $$$$) export SCAN_COOKIE -export STAGING_DIR_HOST=$(TOPDIR)/staging_dir/host SUBMAKE:=umask 022; $(SUBMAKE) ULIMIT_FIX=_limit=`ulimit -n`; [ "$$_limit" = "unlimited" -o "$$_limit" -ge 1024 ] || ulimit -n 1024; -prepare-mk: staging_dir/host/.prereq-build FORCE ; +prepare-mk: $(STAGING_DIR_HOST)/.prereq-build FORCE ; ifdef SDK IGNORE_PACKAGES = linux @@ -75,7 +75,7 @@ endif _ignore = $(foreach p,$(IGNORE_PACKAGES),--ignore $(p)) prepare-tmpinfo: FORCE - @+$(MAKE) -r -s staging_dir/host/.prereq-build $(PREP_MK) + @+$(MAKE) -r -s $(STAGING_DIR_HOST)/.prereq-build $(PREP_MK) mkdir -p tmp/info $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPTH=5 SCAN_EXTRA="" $(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPTH=3 SCAN_EXTRA="" SCAN_MAKEOPTS="TARGET_BUILD=1" @@ -152,7 +152,7 @@ xconfig: scripts/config/qconf prepare-tmpinfo FORCE prepare_kernel_conf: .config toolchain/install FORCE -ifeq ($(wildcard staging_dir/host/bin/quilt),) +ifeq ($(wildcard $(STAGING_DIR_HOST)/bin/quilt),) prepare_kernel_conf: @+$(SUBMAKE) -r tools/quilt/compile else @@ -176,7 +176,7 @@ kernel_nconfig: prepare_kernel_conf kernel_xconfig: prepare_kernel_conf $(_SINGLE)$(NO_TRACE_MAKE) -C target/linux xconfig -staging_dir/host/.prereq-build: include/prereq-build.mk +$(STAGING_DIR_HOST)/.prereq-build: include/prereq-build.mk mkdir -p tmp @$(_SINGLE)$(NO_TRACE_MAKE) -j1 -r -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \ echo "Prerequisite check failed. Use FORCE=1 to override."; \ @@ -199,7 +199,7 @@ else DOWNLOAD_DIRS = package/download endif -download: .config FORCE $(if $(wildcard $(TOPDIR)/staging_dir/host/bin/flock),,tools/flock/compile) +download: .config FORCE $(if $(wildcard $(STAGING_DIR_HOST)/bin/flock),,tools/flock/compile) @+$(foreach dir,$(DOWNLOAD_DIRS),$(SUBMAKE) $(dir);) clean dirclean: .config @@ -263,7 +263,7 @@ distclean: @$(_SINGLE)$(SUBMAKE) -C scripts/config clean ifeq ($(findstring v,$(DEBUG)),) - .SILENT: symlinkclean clean dirclean distclean config-clean download help tmpinfo-clean .config scripts/config/mconf scripts/config/conf menuconfig staging_dir/host/.prereq-build tmp/.prereq-package prepare-tmpinfo + .SILENT: symlinkclean clean dirclean distclean config-clean download help tmpinfo-clean .config scripts/config/mconf scripts/config/conf menuconfig $(STAGING_DIR_HOST)/.prereq-build tmp/.prereq-package prepare-tmpinfo endif .PHONY: help FORCE .NOTPARALLEL: diff --git a/rules.mk b/rules.mk index d53f673d42..3d151338af 100644 --- a/rules.mk +++ b/rules.mk @@ -156,8 +156,8 @@ BUILD_LOG_DIR:=$(if $(call qstrip,$(CONFIG_BUILD_LOG_DIR)),$(call qstrip,$(CONFI PKG_INFO_DIR := $(STAGING_DIR)/pkginfo BUILD_DIR_HOST:=$(if $(IS_PACKAGE_BUILD),$(BUILD_DIR_BASE)/hostpkg,$(BUILD_DIR_BASE)/host) -STAGING_DIR_HOST:=$(TOPDIR)/staging_dir/host -STAGING_DIR_HOSTPKG:=$(TOPDIR)/staging_dir/hostpkg +STAGING_DIR_HOST:=$(abspath $(STAGING_DIR)/../host) +STAGING_DIR_HOSTPKG:=$(abspath $(STAGING_DIR)/../hostpkg) TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space),$(PATH))))) TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH)) From ee397759b65a1e2ab9a58be37c22c9b3bdfd7a7e Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Fri, 6 Jan 2023 15:23:28 +0100 Subject: [PATCH 17/17] iwinfo: update to latest Git HEAD c7b420a devices: add Qualcomm Atheros QCN6024/9024/9074 cards 5914d71 iwinfo: devices: add Qualcomm Atheros IPQ8074 WiSoC Signed-off-by: Christian Marangi --- package/network/utils/iwinfo/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package/network/utils/iwinfo/Makefile b/package/network/utils/iwinfo/Makefile index 6263e47fc9..9d562fbaf9 100644 --- a/package/network/utils/iwinfo/Makefile +++ b/package/network/utils/iwinfo/Makefile @@ -11,9 +11,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/iwinfo.git -PKG_SOURCE_DATE:=2022-12-15 -PKG_SOURCE_VERSION:=8d158096a9882d3090c7e180a296ca7b035b4865 -PKG_MIRROR_HASH:=c376d3f2794fcef2956c038a16b4a1a4d30082ca4f2d2b955bd191d06e78f6ec +PKG_SOURCE_DATE:=2023-01-06 +PKG_SOURCE_VERSION:=c7b420a2f33c6f1034c3e2191eba0cb0374af7b6 +PKG_MIRROR_HASH:=c5d188b2c7aa0fe987ffba8330c956670047ebf5be9a217ef647549c65002cd6 PKG_MAINTAINER:=Jo-Philipp Wich PKG_LICENSE:=GPL-2.0