forked from AsteroidOS/meta-smartwatch
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is intended to be a first step to implementing a generic data transfer profile over Bluetooth as described here: AsteroidOS/asteroid-btsyncd#22 Signed-off-by: Ed Beroset <beroset@ieee.org>
- Loading branch information
Showing
9 changed files
with
618 additions
and
11 deletions.
There are no files selected for viewing
30 changes: 30 additions & 0 deletions
30
...-kernel/linux/linux-catfish/0007-Add-missing-BT_6LOWPAN-option-to-bluetooth-Kconfig.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
From 3ef5cd9eece497e5af800a66a6a2beb2e45c1f15 Mon Sep 17 00:00:00 2001 | ||
From: Ed Beroset <beroset@ieee.org> | ||
Date: Fri, 6 Oct 2023 11:59:35 -0400 | ||
Subject: [PATCH] Add missing BT_6LOWPAN option to bluetooth Kconfig | ||
|
||
This adds the BT_6LOWPAN option back in. It may have been deleted by | ||
accident. | ||
|
||
Signed-off-by: Ed Beroset <beroset@ieee.org> | ||
--- | ||
net/bluetooth/Kconfig | 6 ++++++ | ||
1 file changed, 6 insertions(+) | ||
|
||
diff --git a/net/bluetooth/Kconfig b/net/bluetooth/Kconfig | ||
index 81f837f6d934..b8c794b87523 100644 | ||
--- a/net/bluetooth/Kconfig | ||
+++ b/net/bluetooth/Kconfig | ||
@@ -58,6 +58,12 @@ config BT_LE | ||
depends on BT | ||
default y | ||
|
||
+config BT_6LOWPAN | ||
+ tristate "Bluetooth 6LoWPAN support" | ||
+ depends on BT_LE && 6LOWPAN | ||
+ help | ||
+ IPv6 compression over Bluetooth Low Energy. | ||
+ | ||
config BT_SELFTEST | ||
bool "Bluetooth self testing support" | ||
depends on BT && DEBUG_KERNEL |
27 changes: 27 additions & 0 deletions
27
...tfish/recipes-kernel/linux/linux-catfish/0008-Restore-bluetooth_6lowpan-to-Makefile.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
From 34215ae8e5e5edbaed72b120b167b2b6f120cd2b Mon Sep 17 00:00:00 2001 | ||
From: Ed Beroset <beroset@ieee.org> | ||
Date: Fri, 6 Oct 2023 12:08:29 -0400 | ||
Subject: [PATCH] Restore bluetooth_6lowpan to Makefile | ||
|
||
I'm not sure why or how this was removed, but it's required for using | ||
6lowpan over Bluetooth. | ||
|
||
Signed-off-by: Ed Beroset <beroset@ieee.org> | ||
--- | ||
net/bluetooth/Makefile | 3 +++ | ||
1 file changed, 3 insertions(+) | ||
|
||
diff --git a/net/bluetooth/Makefile b/net/bluetooth/Makefile | ||
index c85a6afc6fe1..9a8ea232d28f 100644 | ||
--- a/net/bluetooth/Makefile | ||
+++ b/net/bluetooth/Makefile | ||
@@ -7,6 +7,9 @@ obj-$(CONFIG_BT_RFCOMM) += rfcomm/ | ||
obj-$(CONFIG_BT_BNEP) += bnep/ | ||
obj-$(CONFIG_BT_CMTP) += cmtp/ | ||
obj-$(CONFIG_BT_HIDP) += hidp/ | ||
+obj-$(CONFIG_BT_6LOWPAN) += bluetooth_6lowpan.o | ||
+ | ||
+bluetooth_6lowpan-y := 6lowpan.o | ||
|
||
bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o \ | ||
hci_sock.o hci_sysfs.o l2cap_core.o l2cap_sock.o smp.o sco.o lib.o \ |
27 changes: 27 additions & 0 deletions
27
meta-catfish/recipes-kernel/linux/linux-catfish/0009-Move-const-to-the-right-location.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
From 36893966a1b412a67fcd50cb4979d1ca5ed23bdc Mon Sep 17 00:00:00 2001 | ||
From: Ed Beroset <beroset@ieee.org> | ||
Date: Fri, 6 Oct 2023 21:04:29 -0400 | ||
Subject: [PATCH] Move const to the right location | ||
|
||
This fixes a small bug in the code in which a duplicate const | ||
declaration was apparently intended to be a const pointer to a const | ||
location. | ||
|
||
Signed-off-by: Ed Beroset <beroset@ieee.org> | ||
--- | ||
include/linux/msm_mhi.h | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/include/linux/msm_mhi.h b/include/linux/msm_mhi.h | ||
index 08dc3a23abfa..a5ffa23a32d0 100644 | ||
--- a/include/linux/msm_mhi.h | ||
+++ b/include/linux/msm_mhi.h | ||
@@ -107,7 +107,7 @@ struct mhi_cb_info { | ||
|
||
struct mhi_client_info_t { | ||
enum MHI_CLIENT_CHANNEL chan; | ||
- const struct device const *dev; | ||
+ const struct device * const dev; | ||
const char *node_name; | ||
void (*mhi_client_cb)(struct mhi_cb_info *); | ||
bool pre_allocate; |
78 changes: 78 additions & 0 deletions
78
...ernel/linux/linux-catfish/0010-include-linux-module.h-copy-__init-__exit-attrs-to-i.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
From f9981ae000018596f86f6c4ecbda34aef0253e2d Mon Sep 17 00:00:00 2001 | ||
From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> | ||
Date: Wed, 6 Feb 2019 18:56:27 +0100 | ||
Subject: [PATCH] include/linux/module.h: copy __init/__exit attrs to | ||
init/cleanup_module | ||
|
||
The upcoming GCC 9 release extends the -Wmissing-attributes warnings | ||
(enabled by -Wall) to C and aliases: it warns when particular function | ||
attributes are missing in the aliases but not in their target. | ||
|
||
In particular, it triggers for all the init/cleanup_module | ||
aliases in the kernel (defined by the module_init/exit macros), | ||
ending up being very noisy. | ||
|
||
These aliases point to the __init/__exit functions of a module, | ||
which are defined as __cold (among other attributes). However, | ||
the aliases themselves do not have the __cold attribute. | ||
|
||
Since the compiler behaves differently when compiling a __cold | ||
function as well as when compiling paths leading to calls | ||
to __cold functions, the warning is trying to point out | ||
the possibly-forgotten attribute in the alias. | ||
|
||
In order to keep the warning enabled, we decided to silence | ||
this case. Ideally, we would mark the aliases directly | ||
as __init/__exit. However, there are currently around 132 modules | ||
in the kernel which are missing __init/__exit in their init/cleanup | ||
functions (either because they are missing, or for other reasons, | ||
e.g. the functions being called from somewhere else); and | ||
a section mismatch is a hard error. | ||
|
||
A conservative alternative was to mark the aliases as __cold only. | ||
However, since we would like to eventually enforce __init/__exit | ||
to be always marked, we chose to use the new __copy function | ||
attribute (introduced by GCC 9 as well to deal with this). | ||
With it, we copy the attributes used by the target functions | ||
into the aliases. This way, functions that were not marked | ||
as __init/__exit won't have their aliases marked either, | ||
and therefore there won't be a section mismatch. | ||
|
||
Note that the warning would go away marking either the extern | ||
declaration, the definition, or both. However, we only mark | ||
the definition of the alias, since we do not want callers | ||
(which only see the declaration) to be compiled as if the function | ||
was __cold (and therefore the paths leading to those calls | ||
would be assumed to be unlikely). | ||
|
||
Link: https://lore.kernel.org/lkml/20190123173707.GA16603@gmail.com/ | ||
Link: https://lore.kernel.org/lkml/20190206175627.GA20399@gmail.com/ | ||
Suggested-by: Martin Sebor <msebor@gcc.gnu.org> | ||
Acked-by: Jessica Yu <jeyu@kernel.org> | ||
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> | ||
|
||
Signed-off-by: Ed Beroset <beroset@ieee.org> | ||
--- | ||
include/linux/init.h | 4 ++-- | ||
1 file changed, 2 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/include/linux/init.h b/include/linux/init.h | ||
index 28ec4d128413..d68791117bd9 100644 | ||
--- a/include/linux/init.h | ||
+++ b/include/linux/init.h | ||
@@ -331,13 +331,13 @@ void __init parse_early_options(char *cmdline); | ||
#define module_init(initfn) \ | ||
static inline initcall_t __inittest(void) \ | ||
{ return initfn; } \ | ||
- int init_module(void) __attribute__((alias(#initfn))); | ||
+ int init_module(void) __copy(initfn) __attribute__((alias(#initfn))); | ||
|
||
/* This is only required if you want to be unloadable. */ | ||
#define module_exit(exitfn) \ | ||
static inline exitcall_t __exittest(void) \ | ||
{ return exitfn; } \ | ||
- void cleanup_module(void) __attribute__((alias(#exitfn))); | ||
+ void cleanup_module(void) __copy(exitfn) __attribute__((alias(#exitfn))); | ||
|
||
#define __setup_param(str, unique_id, fn) /* nothing */ | ||
#define __setup(str, func) /* nothing */ |
99 changes: 99 additions & 0 deletions
99
...es-kernel/linux/linux-catfish/0011-Compiler-Attributes-add-support-for-__copy-gcc-9.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
From b97a52261d797f2731178416dafbad4d26dd0bf5 Mon Sep 17 00:00:00 2001 | ||
From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> | ||
Date: Fri, 6 Oct 2023 22:27:17 -0400 | ||
Subject: [PATCH] Compiler Attributes: add support for __copy (gcc >= 9) | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
From the GCC manual: | ||
|
||
copy | ||
copy(function) | ||
|
||
The copy attribute applies the set of attributes with which function | ||
has been declared to the declaration of the function to which | ||
the attribute is applied. The attribute is designed for libraries | ||
that define aliases or function resolvers that are expected | ||
to specify the same set of attributes as their targets. The copy | ||
attribute can be used with functions, variables, or types. However, | ||
the kind of symbol to which the attribute is applied (either | ||
function or variable) must match the kind of symbol to which | ||
the argument refers. The copy attribute copies only syntactic and | ||
semantic attributes but not attributes that affect a symbol’s | ||
linkage or visibility such as alias, visibility, or weak. | ||
The deprecated attribute is also not copied. | ||
|
||
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html | ||
|
||
The upcoming GCC 9 release extends the -Wmissing-attributes warnings | ||
(enabled by -Wall) to C and aliases: it warns when particular function | ||
attributes are missing in the aliases but not in their target, e.g.: | ||
|
||
void __cold f(void) {} | ||
void __alias("f") g(void); | ||
|
||
diagnoses: | ||
|
||
warning: 'g' specifies less restrictive attribute than | ||
its target 'f': 'cold' [-Wmissing-attributes] | ||
|
||
Using __copy(f) we can copy the __cold attribute from f to g: | ||
|
||
void __cold f(void) {} | ||
void __copy(f) __alias("f") g(void); | ||
|
||
This attribute is most useful to deal with situations where an alias | ||
is declared but we don't know the exact attributes the target has. | ||
|
||
For instance, in the kernel, the widely used module_init/exit macros | ||
define the init/cleanup_module aliases, but those cannot be marked | ||
always as __init/__exit since some modules do not have their | ||
functions marked as such. | ||
|
||
Suggested-by: Martin Sebor <msebor@gcc.gnu.org> | ||
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> | ||
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> | ||
|
||
Link: https://github.com/torvalds/linux/commit/c0d9782f5b6d7157635ae2fd782a4b27d55a6013 | ||
Link: https://github.com/ojeda/linux/commit/8803fd49f7f86efa39b60957c74ccf98690ae2ab | ||
|
||
Signed-off-by: Ed Beroset <beroset@ieee.org> | ||
--- | ||
include/linux/compiler.h | 23 +++++++++++++++++++++++ | ||
1 file changed, 23 insertions(+) | ||
|
||
diff --git a/include/linux/compiler.h b/include/linux/compiler.h | ||
index 4c981adac770..682e8c0a95e5 100644 | ||
--- a/include/linux/compiler.h | ||
+++ b/include/linux/compiler.h | ||
@@ -50,6 +50,29 @@ extern void __chk_io_ptr(const volatile void __iomem *); | ||
|
||
#ifdef __KERNEL__ | ||
|
||
+/* | ||
+ * Minimal backport of compiler_attributes.h to add support for __copy | ||
+ * to v4.9.y so that we can use it in init/exit_module to avoid | ||
+ * -Werror=missing-attributes errors on GCC 9. | ||
+ */ | ||
+#ifndef __has_attribute | ||
+# define __has_attribute(x) __GCC4_has_attribute_##x | ||
+# define __GCC4_has_attribute___copy__ 0 | ||
+#endif | ||
+ | ||
+/* | ||
+ * Optional: only supported since gcc >= 9 | ||
+ * Optional: not supported by clang | ||
+ * Optional: not supported by icc | ||
+ * | ||
+ * gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-copy-function-attribute | ||
+ */ | ||
+#if __has_attribute(__copy__) | ||
+# define __copy(symbol) __attribute__((__copy__(symbol))) | ||
+#else | ||
+# define __copy(symbol) | ||
+#endif | ||
+ | ||
#ifdef __GNUC__ | ||
#include <linux/compiler-gcc.h> | ||
#endif |
55 changes: 55 additions & 0 deletions
55
meta-catfish/recipes-kernel/linux/linux-catfish/0012-Fix-alignment-of-struct-members.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
From 639c2a5098e96b510f7330e3084137bec0613985 Mon Sep 17 00:00:00 2001 | ||
From: Ed Beroset <beroset@ieee.org> | ||
Date: Sat, 7 Oct 2023 11:42:34 -0400 | ||
Subject: [PATCH] Fix alignment of struct members | ||
|
||
With newer versions (>9) of gcc, the compiler correctly warns that | ||
"taking address of packed member of 'struct diag_mempool_t' may result | ||
in an unaligned pointer value [-Waddress-of-packed-member]." | ||
|
||
A similar warning comes up for dci_pkt_req_entry_t. | ||
|
||
This removes the __packed attribute from both structs to address that | ||
problem. | ||
|
||
Signed-off-by: Ed Beroset <beroset@ieee.org> | ||
--- | ||
drivers/char/diag/diag_dci.h | 4 ++-- | ||
drivers/char/diag/diagmem.h | 2 +- | ||
2 files changed, 3 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/drivers/char/diag/diag_dci.h b/drivers/char/diag/diag_dci.h | ||
index a9e2d35cc50a..bf988c5fff23 100644 | ||
--- a/drivers/char/diag/diag_dci.h | ||
+++ b/drivers/char/diag/diag_dci.h | ||
@@ -95,7 +95,7 @@ struct dci_pkt_req_entry_t { | ||
int uid; | ||
int tag; | ||
struct list_head track; | ||
-} __packed; | ||
+}; | ||
|
||
struct diag_dci_reg_tbl_t { | ||
int client_id; | ||
@@ -164,7 +164,7 @@ struct diag_dci_health_stats_proc { | ||
int client_id; | ||
struct diag_dci_health_stats health; | ||
int proc; | ||
-} __packed; | ||
+}; | ||
|
||
struct diag_dci_peripherals_t { | ||
int proc; | ||
diff --git a/drivers/char/diag/diagmem.h b/drivers/char/diag/diagmem.h | ||
index d097a3799e9a..77ef3003559e 100644 | ||
--- a/drivers/char/diag/diagmem.h | ||
+++ b/drivers/char/diag/diagmem.h | ||
@@ -50,7 +50,7 @@ struct diag_mempool_t { | ||
unsigned int poolsize; | ||
int count; | ||
spinlock_t lock; | ||
-} __packed; | ||
+}; | ||
|
||
extern struct diag_mempool_t diag_mempools[NUM_MEMORY_POOLS]; | ||
|
Oops, something went wrong.