openwrt ag71xx as module
This commit is contained in:
parent
7d1c85f680
commit
fa31d00d6a
1 changed files with 55 additions and 0 deletions
55
THOUGHTS.txt
55
THOUGHTS.txt
|
@ -346,3 +346,58 @@ For Liminix we're not going to do that.
|
||||||
Sat Oct 8 11:23:08 BST 2022
|
Sat Oct 8 11:23:08 BST 2022
|
||||||
|
|
||||||
"halt" and "reboot" don't work on gl-ar750
|
"halt" and "reboot" don't work on gl-ar750
|
||||||
|
|
||||||
|
Sat Oct 8 13:10:00 BST 2022
|
||||||
|
|
||||||
|
Where do we go with this ar750?
|
||||||
|
|
||||||
|
- wired networking
|
||||||
|
- wifi
|
||||||
|
|
||||||
|
|
||||||
|
Sun Oct 9 09:57:35 BST 2022
|
||||||
|
|
||||||
|
We want to be able to package kernel modules as regular derivations, so that
|
||||||
|
they get added to the filesystem
|
||||||
|
|
||||||
|
This means they need access to kernel.modulesupport
|
||||||
|
|
||||||
|
This means kernel.modulesupport needs to be in pkgs too?
|
||||||
|
|
||||||
|
This is fine, probably, but we'd like to avoid closing over vmlinux because
|
||||||
|
there's no need for it to be in the filesystem
|
||||||
|
|
||||||
|
Mon Oct 10 22:57:23 BST 2022
|
||||||
|
|
||||||
|
The problem is that kernel kconfig options are manipulated in the
|
||||||
|
liminix modules, which means that data must be (transitively) available
|
||||||
|
to modules, so they can't be regular packages as they're tied so tightly
|
||||||
|
to the exact config. Unless we define a second overlay that references
|
||||||
|
the configuration object, but my head hurts when I start to think about that
|
||||||
|
so maybe not.
|
||||||
|
|
||||||
|
Tue Oct 11 00:00:13 BST 2022
|
||||||
|
|
||||||
|
Building ag71xx (ethernet driver) as a module doesn't work because
|
||||||
|
it references a symbol ath79_pll_base in the kernel that hasn't been
|
||||||
|
marked with EXPORT_SYMBOL.
|
||||||
|
|
||||||
|
We could forge an object file that "declares" it with a gross and disgusting hack like this
|
||||||
|
|
||||||
|
$ echo > empty # not actually "empty", objcopy complains about that
|
||||||
|
$ grep ath79_pll_base /nix/store/jcc114cd13xa8aa4mil35rlnmxnlmv09-vmlinux-mips-unknown-linux-musl-modulesupport/System.map
|
||||||
|
ffffffff807b2094 B ath79_pll_base
|
||||||
|
$ mips-unknown-linux-musl-objcopy -I binary -O elf32-big --add-section .bss=empty --add-symbol ath79_pll_base=.bss:0x807b2094 empty f.o
|
||||||
|
|
||||||
|
I don't claim this is a good idea, just an idea. Thought was that we would not
|
||||||
|
have to declare its type this way. Also it might not work with kaslr
|
||||||
|
https://stackoverflow.com/a/68903503
|
||||||
|
|
||||||
|
|
||||||
|
Backstory: why are we trying to build this as a module? because the
|
||||||
|
openwrt fork of it seems to be a bit more advanced than the mainline,
|
||||||
|
and I *suspect* that the mainline version doesn't work with our
|
||||||
|
openwrt-based device tree which ahs the mdio as a nested node inside
|
||||||
|
the ag71xx node - in mainline the driver seems to have all the mdio
|
||||||
|
stuff inline. So, could we build the openwrt driver without patching
|
||||||
|
the crap out of our kernel
|
||||||
|
|
Loading…
Reference in a new issue