void-ppc / void-packages

The Void source packages collection (all ppc platforms, staging + main)
https://repo.voidlinux-ppc.org
Other
27 stars 12 forks source link

BE: kernel compatibility #1

Closed q66 closed 5 years ago

q66 commented 5 years ago

Current status: WIP, broken on G5, should work on modern hardware

q66 commented 5 years ago

Some comments are in https://github.com/void-linux/void-packages/pull/8244.

pullmoll commented 5 years ago

Hi and good idea to move here! Now I spent more than 2 hours on comparing ppc64le-dotconfig with ppc64-config just to realize I was on the wrong branch. This is annoying ;-P

I think it might make more sense to try and collect a list of vital changes required from ppc64le to ppc64 for the G5 by only peeking at diff ppc64{le,}-dotconfig. Manually changing the config file like I tried is probably too cumbersome because you sometimes have a big number of changes spread over the entire config file by modifying just one option.

q66 commented 5 years ago

That is what I did when making the ppc64le config - I started with Ubuntu -generic, then gradually changed things in menuconfig until the diff matched.

pullmoll commented 5 years ago

FYI I refactored the ppc64-dotconfig file once more using ppc64le-dotconfig as a base and applying differences between it and Debian's 4.19.x config until it booted and worked on the G5 again. Now I based the linux5.0/files/ppc64-dotconfig on it, answered a lot of config options, and am building the 5.0.9 kernel to test on the hardware.

This is probably as close as I can approach ppc64le configuration.

q66 commented 5 years ago

Perfect. Is that what's currently in the ppc64-gnu branch?

pullmoll commented 5 years ago

Yes, I pushed it. linux5.0 is not yet tested, though. For the new options for 5.0 I sometimes chose to build a new module instead of not building it as suggested. How did you go from 4.19 to 5.0?

q66 commented 5 years ago

I took my 4.19 config, reapplied it on a 5.0 tree and then checked each option against what other Void kernels are doing. Technically, if things are right, the diff between the previous 4.19 BE config and new 4.19 BE config should be roughly the same as the diff between the 5.0 configs...

also, i checked your configs against the new options I wanted to enable in the LE config as well compared to my current config, it seems you enabled all of them, so the only thing to do at this point is to get the updated BE configs upstream and I will then update the LE configs accordingly :)

perfect, great job on this

pullmoll commented 5 years ago

BTW force installing the same kernel using xbps-install -S -f linux4.19 gave some misleading output when dracut wass run, probably due to the new or removed modules. Running depmod -a 4.19.36_1 and dracut -f --kver=4.19.36_1 again then fixed it for me.

q66 commented 5 years ago

yeah, that's normal on any architecture (and indeed due to module changes)

pullmoll commented 5 years ago

Anyway I think you can merge ppc64-gnu whenever you see fit. There's still the issue with build_helper=gir not working for cross ppc64-gnu which I don't understand and could not fix. Perhaps someone else can fix that once the changes are in void-linux/void-packages master.

q66 commented 5 years ago

Okay. Btw, some more things I've come across when inspecting the configs:

-CONFIG_LOG_BUF_SHIFT=19
+CONFIG_LOG_BUF_SHIFT=17

necessary?

-# CONFIG_CMDLINE_BOOL is not set
+CONFIG_CMDLINE_BOOL=y
+CONFIG_CMDLINE="console=hvsi0 console=hvc0 console=ttyS0,9600 console=tty0"
+# CONFIG_CMDLINE_FORCE is not set

do we want these? this pretty much forces serial console output by default and stuff, shouldn't we let the bootloader to set these?

 # CONFIG_GCOV_KERNEL is not set
-# CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
-# CONFIG_PLUGIN_HOSTCC is not set
-# CONFIG_HAVE_GCC_PLUGINS is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_PLUGIN_HOSTCC="g++"
+CONFIG_HAVE_GCC_PLUGINS=y

probably shouldn't be changed

-CONFIG_MQ_IOSCHED_KYBER=y
-# CONFIG_IOSCHED_BFQ is not set
+CONFIG_MQ_IOSCHED_KYBER=m
+CONFIG_IOSCHED_BFQ=m
+CONFIG_BFQ_GROUP_IOSCHED=y

probably best to leave the I/O schedulers alone, to keep it the same everywhere

-CONFIG_ARCH_MMAP_RND_BITS=28
+CONFIG_ARCH_MMAP_RND_BITS=14
 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
-CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=7

necessary?

-CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096

necessary?

@@ -870,7 +909,7 @@ CONFIG_XFRM_OFFLOAD=y
 CONFIG_XFRM_ALGO=m
 CONFIG_XFRM_USER=m
 CONFIG_XFRM_INTERFACE=m
-# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_SUB_POLICY=y
 CONFIG_XFRM_MIGRATE=y
 # CONFIG_XFRM_STATISTICS is not set
 CONFIG_XFRM_IPCOMP=m
@@ -878,11 +917,11 @@ CONFIG_NET_KEY=m
 CONFIG_NET_KEY_MIGRATE=y
 CONFIG_SMC=m
 CONFIG_SMC_DIAG=m
-# CONFIG_XDP_SOCKETS is not set
+CONFIG_XDP_SOCKETS=y
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
 CONFIG_IP_ADVANCED_ROUTER=y
-# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_FIB_TRIE_STATS=y
 CONFIG_IP_MULTIPLE_TABLES=y
 CONFIG_IP_ROUTE_MULTIPATH=y
 CONFIG_IP_ROUTE_VERBOSE=y
@@ -902,7 +941,7 @@ CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
 CONFIG_NET_FOU=m
-# CONFIG_NET_FOU_IP_TUNNELS is not set
+CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_ESP_OFFLOAD=m
@@ -960,9 +999,12 @@ CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
 CONFIG_IPV6_GRE=m
 CONFIG_IPV6_FOU=m
+CONFIG_IPV6_FOU_TUNNEL=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
 CONFIG_IPV6_SUBTREES=y
-# CONFIG_IPV6_MROUTE is not set
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
 CONFIG_IPV6_SEG6_LWTUNNEL=y
 CONFIG_IPV6_SEG6_HMAC=y
 CONFIG_IPV6_SEG6_BPF=y
@@ -992,7 +1034,7 @@ CONFIG_NETFILTER_CONNCOUNT=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_ZONES=y
-# CONFIG_NF_CONNTRACK_PROCFS is not set
+CONFIG_NF_CONNTRACK_PROCFS=y
 CONFIG_NF_CONNTRACK_EVENTS=y
 CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
@@ -1195,7 +1237,7 @@ CONFIG_IP_VS_LBLC=m
 CONFIG_IP_VS_LBLCR=m
 CONFIG_IP_VS_DH=m
 CONFIG_IP_VS_SH=m
-# CONFIG_IP_VS_MH is not set
+CONFIG_IP_VS_MH=m
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_NQ=m

@@ -1259,7 +1301,7 @@ CONFIG_IP_NF_TARGET_CLUSTERIP=m
 CONFIG_IP_NF_TARGET_ECN=m
 CONFIG_IP_NF_TARGET_TTL=m
 CONFIG_IP_NF_RAW=m
-# CONFIG_IP_NF_SECURITY is not set
+CONFIG_IP_NF_SECURITY=m
 CONFIG_IP_NF_ARPTABLES=m
 CONFIG_IP_NF_ARPFILTER=m
 CONFIG_IP_NF_ARP_MANGLE=m
@@ -1300,11 +1342,16 @@ CONFIG_IP6_NF_TARGET_REJECT=m
 CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
-# CONFIG_IP6_NF_SECURITY is not set
+CONFIG_IP6_NF_SECURITY=m
 CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_NF_DEFRAG_IPV6=m
+
+#
+# DECnet: Netfilter Configuration
+#
+CONFIG_DECNET_NF_GRABULATOR=m
 CONFIG_NF_TABLES_BRIDGE=y
 CONFIG_NFT_BRIDGE_REJECT=m
 CONFIG_NF_LOG_BRIDGE=m
@@ -1354,7 +1401,7 @@ CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
 CONFIG_SCTP_COOKIE_HMAC_SHA1=y
 CONFIG_INET_SCTP_DIAG=m
 CONFIG_RDS=m
-# CONFIG_RDS_RDMA is not set
+CONFIG_RDS_RDMA=m
 CONFIG_RDS_TCP=m
 # CONFIG_RDS_DEBUG is not set
 CONFIG_TIPC=m
@@ -1391,7 +1438,8 @@ CONFIG_NET_DSA_TAG_QCA=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
 CONFIG_VLAN_8021Q_MVRP=y
-# CONFIG_DECNET is not set
+CONFIG_DECNET=m
+CONFIG_DECNET_ROUTER=y
 CONFIG_LLC=m
 CONFIG_LLC2=m
 CONFIG_ATALK=m
@@ -1411,16 +1459,16 @@ CONFIG_6LOWPAN_NHC_IPV6=m
 CONFIG_6LOWPAN_NHC_MOBILITY=m
 CONFIG_6LOWPAN_NHC_ROUTING=m
 CONFIG_6LOWPAN_NHC_UDP=m
-# CONFIG_6LOWPAN_GHC_EXT_HDR_HOP is not set
-# CONFIG_6LOWPAN_GHC_UDP is not set
-# CONFIG_6LOWPAN_GHC_ICMPV6 is not set
-# CONFIG_6LOWPAN_GHC_EXT_HDR_DEST is not set
-# CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG is not set
-# CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE is not set
+CONFIG_6LOWPAN_GHC_EXT_HDR_HOP=m
+CONFIG_6LOWPAN_GHC_UDP=m
+CONFIG_6LOWPAN_GHC_ICMPV6=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_DEST=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG=m
+CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE=m
 CONFIG_IEEE802154=m
 CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y
 CONFIG_IEEE802154_SOCKET=m
-# CONFIG_IEEE802154_6LOWPAN is not set
+CONFIG_IEEE802154_6LOWPAN=m
 CONFIG_MAC802154=m
 CONFIG_NET_SCHED=y

@@ -1467,16 +1515,25 @@ CONFIG_NET_CLS_TCINDEX=m
 CONFIG_NET_CLS_ROUTE4=m
 CONFIG_NET_CLS_FW=m
 CONFIG_NET_CLS_U32=m
-# CONFIG_CLS_U32_PERF is not set
-# CONFIG_CLS_U32_MARK is not set
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
 CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
-# CONFIG_NET_CLS_CGROUP is not set
+CONFIG_NET_CLS_CGROUP=m
 CONFIG_NET_CLS_BPF=m
 CONFIG_NET_CLS_FLOWER=m
 CONFIG_NET_CLS_MATCHALL=m
-# CONFIG_NET_EMATCH is not set
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_CANID=m
+CONFIG_NET_EMATCH_IPSET=m
+CONFIG_NET_EMATCH_IPT=m
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_GACT=m
@@ -1542,8 +1599,8 @@ CONFIG_NET_FLOW_LIMIT=y
 #
 # Network testing
 #
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_DROP_MONITOR is not set
+CONFIG_NET_PKTGEN=m
+CONFIG_NET_DROP_MONITOR=m
 CONFIG_HAMRADIO=y

 #
@@ -1592,6 +1649,7 @@ CONFIG_CAN_MSCAN=m
 # CONFIG_CAN_PEAK_PCIEFD is not set
 # CONFIG_CAN_SJA1000 is not set
 CONFIG_CAN_SOFTING=m
+# CONFIG_CAN_SOFTING_CS is not set

 #
 # CAN SPI interfaces
@@ -1618,6 +1676,7 @@ CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
 CONFIG_BT_BNEP_MC_FILTER=y
 CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
 CONFIG_BT_HIDP=m
 CONFIG_BT_HS=y
 CONFIG_BT_LE=y
@@ -1650,10 +1709,13 @@ CONFIG_BT_HCIUART_INTEL=y
 CONFIG_BT_HCIUART_BCM=y
 CONFIG_BT_HCIUART_QCA=y
 CONFIG_BT_HCIUART_AG6XX=y
-# CONFIG_BT_HCIUART_MRVL is not set
+CONFIG_BT_HCIUART_MRVL=y
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
 CONFIG_BT_HCIVHCI=m
 CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
@@ -1665,7 +1727,7 @@ CONFIG_AF_RXRPC=m
 CONFIG_AF_RXRPC_IPV6=y
 # CONFIG_AF_RXRPC_INJECT_LOSS is not set
 # CONFIG_AF_RXRPC_DEBUG is not set
-# CONFIG_RXKAD is not set
+CONFIG_RXKAD=y
 CONFIG_AF_KCM=m
 CONFIG_STREAM_PARSER=y
 CONFIG_FIB_RULES=y
@@ -1712,7 +1774,7 @@ CONFIG_RFKILL_INPUT=y
 CONFIG_RFKILL_GPIO=m
 CONFIG_NET_9P=m
 CONFIG_NET_9P_VIRTIO=m
-# CONFIG_NET_9P_RDMA is not set
+CONFIG_NET_9P_RDMA=m
 # CONFIG_NET_9P_DEBUG is not set
 CONFIG_CAIF=m
 # CONFIG_CAIF_DEBUG is not set

all these changes in the net/ namespace are probably not necessary

@@ -3209,20 +3334,92 @@ CONFIG_USB_NET_RNDIS_WLAN=m
 CONFIG_WIMAX_I2400M=m
 CONFIG_WIMAX_I2400M_USB=m
 CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-# CONFIG_WAN is not set
+CONFIG_WAN=y
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=m
+CONFIG_HDLC_RAW_ETH=m
+CONFIG_HDLC_CISCO=m
+CONFIG_HDLC_FR=m
+CONFIG_HDLC_PPP=m
+# CONFIG_HDLC_X25 is not set
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+# CONFIG_PC300TOO is not set
+CONFIG_FARSYNC=m
+CONFIG_DSCC4=m
+# CONFIG_DSCC4_PCISYNC is not set
+# CONFIG_DSCC4_PCI_RST is not set
+CONFIG_DLCI=m
+CONFIG_DLCI_MAX=8
+CONFIG_LAPBETHER=m
+CONFIG_X25_ASY=m
 CONFIG_IEEE802154_DRIVERS=m
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
 # CONFIG_IEEE802154_AT86RF230_DEBUGFS is not set
 CONFIG_IEEE802154_MRF24J40=m
-# CONFIG_IEEE802154_CC2520 is not set
+CONFIG_IEEE802154_CC2520=m
 CONFIG_IEEE802154_ATUSB=m
 CONFIG_IEEE802154_ADF7242=m
 # CONFIG_IEEE802154_MCR20A is not set
 CONFIG_IEEE802154_HWSIM=m
 # CONFIG_NETDEVSIM is not set
 CONFIG_NET_FAILOVER=m
-# CONFIG_ISDN is not set
+CONFIG_ISDN=y
+CONFIG_ISDN_I4L=m
+# CONFIG_ISDN_PPP is not set
+# CONFIG_ISDN_AUDIO is not set
+# CONFIG_ISDN_X25 is not set
+
+#
+# ISDN feature submodules
+#
+# CONFIG_ISDN_DIVERSION is not set
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+# CONFIG_ISDN_DRV_HISAX is not set
+CONFIG_ISDN_CAPI=m
+CONFIG_CAPI_TRACE=y
+# CONFIG_ISDN_CAPI_CAPI20 is not set
+# CONFIG_ISDN_CAPI_CAPIDRV is not set
+
+#
+# CAPI hardware drivers
+#
+# CONFIG_CAPI_AVM is not set
+# CONFIG_CAPI_EICON is not set
+CONFIG_ISDN_DRV_GIGASET=m
+CONFIG_GIGASET_CAPI=y
+# CONFIG_GIGASET_BASE is not set
+# CONFIG_GIGASET_M105 is not set
+# CONFIG_GIGASET_M101 is not set
+# CONFIG_GIGASET_DEBUG is not set
+CONFIG_HYSDN=m
+CONFIG_HYSDN_CAPI=y
+CONFIG_MISDN=m
+CONFIG_MISDN_DSP=m
+CONFIG_MISDN_L1OIP=m
+
+#
+# mISDN hardware drivers
+#
+CONFIG_MISDN_HFCPCI=m
+CONFIG_MISDN_HFCMULTI=m
+CONFIG_MISDN_HFCUSB=m
+CONFIG_MISDN_AVMFRITZ=m
+CONFIG_MISDN_SPEEDFAX=m
+CONFIG_MISDN_INFINEON=m
+CONFIG_MISDN_W6692=m
+CONFIG_MISDN_NETJET=m
+CONFIG_MISDN_IPAC=m
+CONFIG_MISDN_ISAR=m
+CONFIG_ISDN_HDLC=m
 CONFIG_NVM=y
 # CONFIG_NVM_PBLK is not set

should not need these either

q66 commented 5 years ago

There's also a fair amount of changes in the filesystems section, we probably don't need stuff like BeFS or MINIX FS or QNX FS, JFFS2 could be useful for openfirmware

q66 commented 5 years ago

Anyway, I started picking the ppc64-gnu changes for staging. I will leave out the llvm ones as it's incomplete (and will need revbumping as llvm is always a cross-compiler) so i will do those myself separately

pullmoll commented 5 years ago

CONFIG_LOG_BUF_SHIFT=17 is probably to reduce memory footprint on low RAM machines.

CONFIG_CMD_LINE_BOOL and the default CONFIG_CMD_LINE make a difference in that they print the early (pre console on fb) stage info on the openfirmware fb. They can be overriden (also to empty) by the bootloader AFAIK.

I don't know why the CONFIG_PLUGIN_... stuff always comes back. Yes, we should disable it to avoid breakage with compiler / kernel updates.

I/O schedulers can certainly be configured as elsewhere from what I know about them.

The CONFIG_ARCH_MMAP_RND_BITS may be a compromise for low RAM machines again? I took them from Debian without investigating what they actually do. Do you know what their purpose is?

For CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 is this perhaps related to NVIDIA and 4k pages on their GPU? I haven't tried to run a kernel without that change and it is again taken from Debian verbatim.

For the net / namespace changes I have no clue whether this may be related to tftp, or netboot, or perhaps Apple hardware specific layers and protocols.

You are right: ISDN is probably no longer of any use to 99,99% of the possible users.

q66 commented 5 years ago

AFAIK all the mmap stuff is hardening, it should probably not affect things, so it should be safe to leave them as in ppc64le config but not sure without testing. CONFIG_LOG_BUF_SHIFT set to 19 should be 512kB, so nothing much to worry about from RAM standpoint...

The net namespace stuff is pretty much generic Debian changes, so it should be no problem to change them, as long as it's not obviously wrong - it includes stuff like 6lowpan changes and whatnot, we probably don't need any of that.

As for the cmdline, you are right. It behaves differently per architecture, it seems. On x86 it's the default stuff and any params passed by bootloader will be appended, on ppc this is not the case, if the bootloader supplies any arguments, the default cmdline will be ignored unless CONFIG_CMDLINE_FORCE is used.

pullmoll commented 5 years ago

I can build a 4.19 kernel with CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 and see if lxdm still runs. I'll also keep CONFIG_LOG_BUF_SHIFT=19 for that try.

q66 commented 5 years ago

I also kinda wonder if it's worth it to enable all these legacy fbdev drivers...

pullmoll commented 5 years ago

Well, people may put old video cards in their Macs' PCI, PCI-X or AGP slots. As long as they are just modules it doesn't really hurt to have them, doesn't it?

q66 commented 5 years ago

Well, we need it for nvidia, I guess, because nouveau does not work right on ppc64 (the driver does not like 64k pages, but 64k pages are preferred on ppc64 because of lower overhead and so on, hence pretty much every distro defaulting to them) - some of these other old cards might not be worth it though, especially where an equivalent drm driver exists instead.

q66 commented 5 years ago

but yeah, you are right. People could be using old matrox cards and so on in those. Probably no point in enabling them on LE, though :)

pullmoll commented 5 years ago

For the nouveau driver: it works fine AFAICT. See my Xorg.0.log

q66 commented 5 years ago

Interesting. Maybe it got fixed then.

pullmoll commented 5 years ago

OK. MMAP = 64k and LOG SHIFT = 19 work just fine so you can ditch those changes.

q66 commented 5 years ago

Okay. Can you try the net/ and other changes as well, and then update the branch? It's a fair amount of changes, so it's not something I can test here...

pullmoll commented 5 years ago

It will take some time. My girlfriend has precedence. I will look at updates later tonite

q66 commented 5 years ago

Yeah, take as long as you need - in the meantime I got most of the commits from your branch in staging and master, so I will PR these upstream now.

pullmoll commented 5 years ago

Another round of trimming down for linux-4.19/files/ppc64-dotconfig and it still works. I guess once this is settled you could simply derive linux5.0 from it yourself. I'm going to test 5.0 with accepting all default answers now.

q66 commented 5 years ago

yeah, i think i can easily do 5.0 myself

pullmoll commented 5 years ago

Hmm.. something is wrong with my branch, need to solve conflicts manually.

q66 commented 5 years ago

i think it's because master contains your commits but with fixes

pullmoll commented 5 years ago

Yes, something along this line. Perhaps I should simply drop the previous patch and add the current working ppc64-dotconfig instead.

q66 commented 5 years ago

ah, i haven't changed anything in the kernel commits so those should not conflict, only gcc and crosstoolchain

pullmoll commented 5 years ago

Ok, now it's there. I think we can also simplify archs="… ppc64*". And if you think I should try to add, remove, or change more bits and test, please amend and lmk.

q66 commented 5 years ago

Yeah, now it's looking basically perfect. I will make some adjustments to it before PRing it in (I don't think we need filesystems like UnixWare VxFS or IRIX EFS or MINIX FS or QNX4FS for anything, especially considering the other configs don't have them) but that's something where I can be sure nothing will be broken... (i'll leave JFFS2 in, apparently it can be used with openfirmware)

i'll do the ppc64le changes while at it, and submit it in a single PR, also together with linux5.0

pullmoll commented 5 years ago

Great! If 5.0 also works for me, I'll take your gcc etc. changes and restart the ppc64 cross bootstrap + packages. It'll be interesting to see if this also works on the G4 of @stenstorp .

q66 commented 5 years ago

G4 is a 32-bit CPU, so that's a separate cfg...

pullmoll commented 5 years ago

D'OH! I missed that point :) BTW since ppc64 can run ppc binaries would it make sense to do something similar to x86_64/i686, i.e. multilib support? Overkill, huh?

q66 commented 5 years ago

In theory one can do multilib for ppc64 glibc, but since our setup is ELFv2 based (which makes it possibly the first distro to do so in production for glibc), I wonder how much gcc and the rest of the toolchain would cooperate... FWIW, this can always be investigated and done later, we're prepared for it (not enabling multilib explicitly for now, but the compiler is configured for biarch, i.e. it supports -m32, just misses the multilib files; I did this in order to be able to compile grub-powerpc-ieee1275 as that needs to emit 32-bit code)

pullmoll commented 5 years ago

Ok, thank you for the info! And thank you for your fantastic work without which I would have had no chance to reach the point where I am now. 5.0.9 runs perfectly fine. I'll restart the ppc64 cross-bootstrap and be back tomorrow.

q66 commented 5 years ago

That's good to hear, also no problem, your G5 testing is a big help as well otherwise I'd have no way to test whether the big endian stuff actually works on older hw - Void currently has a good amount of potential to establish itself on the architecture for both older hardware (because lightweight and flexible) and modern hardware (because it's a fresh legacy-free port, which allows us to do neat things other can't, and beyond the big established distros - aka debian/ubuntu/fedora/gentoo there is barely anything)

q66 commented 5 years ago

I noticed there was some git-caused brokenness in the master branch (it differed from staging for whatever reason). I had to reset it to be the same as staging (the history was starting to get pretty dirty anyway, now it's simple and clean), which means your branch will not rebase cleanly, i'd suggest something like this

git checkout master
git checkout -b temp
git cherry-pick <commit range currently in your branch>
git checkout ppc64-gnu
git reset --hard temp
git push --force ppc64-gnu
git branch -D temp

I'll be more careful with keeping it identical to staging from now on.

q66 commented 5 years ago

or maybe you can just do nothing, there is just the kernel stuff and llvm left anyway and i'll be PRing both later... then we can delete the branch and be done with it

pullmoll commented 5 years ago

Yes, we can just delete the branch and I can keep the changes local until they are in a PR.

q66 commented 5 years ago

Hm, I just wanted to go deal with the kernel configs and I noticed you deleted the branch, and I have an older copy. Could you paste the up to date 4.19 dotconfig somewhere, so I can work with it?

pullmoll commented 5 years ago

Oops, I thought you had a copy of that branch somewhere. Here's the most recent ppc64-dotconfig

q66 commented 5 years ago

https://github.com/void-linux/void-packages/pull/11369

q66 commented 5 years ago

Merged https://github.com/void-linux/void-packages/pull/11369