History

Merge tag 'm68k-for-v5.7-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k

Pull m68k updates from Geert Uytterhoeven: - pagetable layout rewrite, to facilitate global READ_ONCE() rework - Zorro (Amiga) and DIO (HP 9000/300) bus cleanups - defconfig updates - minor cleanups and fixes * tag 'm68k-for-v5.7-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: (23 commits) m68k: defconfig: Update defconfigs for v5.6-rc4 zorro: Replace zero-length array with flexible-array member m68k: Switch to asm-generic/hardirq.h fbdev: c2p: Use BUILD_BUG() instead of custom solution dio: Remove unused dio_dev_driver() dio: Fix dio_bus_match() kerneldoc dio: Make dio_match_device() static zorro: Move zorro_bus_type to bus-private header file zorro: Remove unused zorro_dev_driver() zorro: Use zorro_match_device() helper in zorro_bus_match() zorro: Fix zorro_bus_match() kerneldoc zorro: Make zorro_match_device() static m68k: Fix Kconfig indentation m68k: mm: Change ColdFire pgtable_t m68k: mm: Fully initialize the page-table allocator m68k: mm: Extend table allocator for multiple sizes m68k: mm: Use table allocator for pgtables m68k: mm: Improve kernel_page_table() m68k: mm: Restructure Motorola MMU page-table layout m68k: mm: Move the pointer table allocator to motorola.c ...

Linus Torvalds committed 6 years ago

Commit 58233cc2 parents 458ef2a 86cded533 files · +351 −396Browse files

Unified · Split

33 files
  1. arch/m68k/Kconfig.bus +1 −1
  2. arch/m68k/Kconfig.debug +8 −8
  3. arch/m68k/Kconfig.machine +4 −4
  4. arch/m68k/configs/amiga_defconfig +1 −4
  5. arch/m68k/configs/apollo_defconfig +1 −4
  6. arch/m68k/configs/atari_defconfig +1 −4
  7. arch/m68k/configs/bvme6000_defconfig +1 −4
  8. arch/m68k/configs/hp300_defconfig +1 −4
  9. arch/m68k/configs/mac_defconfig +1 −4
  10. arch/m68k/configs/multi_defconfig +1 −4
  11. arch/m68k/configs/mvme147_defconfig +1 −4
  12. arch/m68k/configs/mvme16x_defconfig +1 −4
  13. arch/m68k/configs/q40_defconfig +1 −4
  14. arch/m68k/configs/sun3_defconfig +1 −4
  15. arch/m68k/configs/sun3x_defconfig +1 −4
  16. arch/m68k/include/asm/Kbuild +1 −0
  17. arch/m68k/include/asm/hardirq.h +0 −29
  18. arch/m68k/include/asm/mcf_pgalloc.h +14 −17
  19. arch/m68k/include/asm/motorola_pgalloc.h +26 −48
  20. arch/m68k/include/asm/motorola_pgtable.h +21 −15
  21. arch/m68k/include/asm/page.h +13 −3
  22. arch/m68k/include/asm/pgtable_mm.h +5 −5
  23. arch/m68k/mm/init.c +20 −14
  24. arch/m68k/mm/kmap.c +16 −20
  25. arch/m68k/mm/memory.c +0 −103
  26. arch/m68k/mm/motorola.c +187 −41
  27. drivers/dio/dio-driver.c +4 −5
  28. drivers/video/fbdev/c2p_core.h +6 −6
  29. drivers/zorro/zorro-driver.c +5 −11
  30. drivers/zorro/zorro.c +1 −1
  31. drivers/zorro/zorro.h +7 −0
  32. include/linux/dio.h +0 −5
  33. include/linux/zorro.h +0 −12
arch/m68k/Kconfig.bus+1−1
@@ -66,6 +66,6 @@ endif · 65 unmodified lines
6666 if !MMU
6767
6868 config ISA_DMA_API
69− def_bool !M5272
69+ def_bool !M5272
7070
7171 endif
arch/m68k/Kconfig.debug+8−8
@@ -12,16 +12,16 @@ config EARLY_PRINTK · 11 unmodified lines
1212 bool "Early printk"
1313 depends on !(SUN3 || M68000 || COLDFIRE)
1414 help
15− Write kernel log output directly to a serial port.
16− Where implemented, output goes to the framebuffer as well.
17− PROM console functionality on Sun 3x is not affected by this option.
15+ Write kernel log output directly to a serial port.
16+ Where implemented, output goes to the framebuffer as well.
17+ PROM console functionality on Sun 3x is not affected by this option.
1818
19− Pass "earlyprintk" on the kernel command line to get a
20− boot console.
19+ Pass "earlyprintk" on the kernel command line to get a
20+ boot console.
2121
22− This is useful for kernel debugging when your machine crashes very
23− early, i.e. before the normal console driver is loaded.
24− You should normally say N here, unless you want to debug such a crash.
22+ This is useful for kernel debugging when your machine crashes very
23+ early, i.e. before the normal console driver is loaded.
24+ You should normally say N here, unless you want to debug such a crash.
2525
2626 if !MMU
2727
arch/m68k/Kconfig.machine+4−4
@@ -269,10 +269,10 @@ config AMCORE · 268 unmodified lines
269269 Support for the Sysam AMCORE open-hardware generic board.
270270
271271 config STMARK2
272− bool "Sysam stmark2 board support"
273− depends on M5441x
274− help
275− Support for the Sysam stmark2 open-hardware generic board.
272+ bool "Sysam stmark2 board support"
273+ depends on M5441x
274+ help
275+ Support for the Sysam stmark2 open-hardware generic board.
276276
277277 config FIREBEE
278278 bool "FireBee board support"
arch/m68k/configs/amiga_defconfig+1−4
@@ -173,7 +173,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 172 unmodified lines
173173 CONFIG_NETFILTER_XT_MATCH_OSF=m
174174 CONFIG_NETFILTER_XT_MATCH_OWNER=m
175175 CONFIG_NETFILTER_XT_MATCH_POLICY=m
176−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
177176 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
178177 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
179178 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -369,6 +368,7 @@ CONFIG_TCM_FILEIO=m · 189 unmodified lines
369368 CONFIG_TCM_PSCSI=m
370369 CONFIG_NETDEVICES=y
371370 CONFIG_DUMMY=m
371+CONFIG_WIREGUARD=m
372372 CONFIG_EQUALIZER=m
373373 CONFIG_NET_TEAM=m
374374 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -613,9 +613,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 238 unmodified lines
613613 CONFIG_CRYPTO_USER_API_SKCIPHER=m
614614 CONFIG_CRYPTO_USER_API_RNG=m
615615 CONFIG_CRYPTO_USER_API_AEAD=m
616−CONFIG_CRYPTO_LIB_BLAKE2S=m
617−CONFIG_CRYPTO_LIB_CURVE25519=m
618−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
619616 # CONFIG_CRYPTO_HW is not set
620617 CONFIG_CRC32_SELFTEST=m
621618 CONFIG_CRC64=m
arch/m68k/configs/apollo_defconfig+1−4
@@ -169,7 +169,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 168 unmodified lines
169169 CONFIG_NETFILTER_XT_MATCH_OSF=m
170170 CONFIG_NETFILTER_XT_MATCH_OWNER=m
171171 CONFIG_NETFILTER_XT_MATCH_POLICY=m
172−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
173172 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
174173 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
175174 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -348,6 +347,7 @@ CONFIG_TCM_FILEIO=m · 172 unmodified lines
348347 CONFIG_TCM_PSCSI=m
349348 CONFIG_NETDEVICES=y
350349 CONFIG_DUMMY=m
350+CONFIG_WIREGUARD=m
351351 CONFIG_EQUALIZER=m
352352 CONFIG_NET_TEAM=m
353353 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -569,9 +569,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 215 unmodified lines
569569 CONFIG_CRYPTO_USER_API_SKCIPHER=m
570570 CONFIG_CRYPTO_USER_API_RNG=m
571571 CONFIG_CRYPTO_USER_API_AEAD=m
572−CONFIG_CRYPTO_LIB_BLAKE2S=m
573−CONFIG_CRYPTO_LIB_CURVE25519=m
574−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
575572 # CONFIG_CRYPTO_HW is not set
576573 CONFIG_CRC32_SELFTEST=m
577574 CONFIG_CRC64=m
arch/m68k/configs/atari_defconfig+1−4
@@ -176,7 +176,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 175 unmodified lines
176176 CONFIG_NETFILTER_XT_MATCH_OSF=m
177177 CONFIG_NETFILTER_XT_MATCH_OWNER=m
178178 CONFIG_NETFILTER_XT_MATCH_POLICY=m
179−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
180179 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
181180 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
182181 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -364,6 +363,7 @@ CONFIG_TCM_FILEIO=m · 181 unmodified lines
364363 CONFIG_TCM_PSCSI=m
365364 CONFIG_NETDEVICES=y
366365 CONFIG_DUMMY=m
366+CONFIG_WIREGUARD=m
367367 CONFIG_EQUALIZER=m
368368 CONFIG_NET_TEAM=m
369369 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -591,9 +591,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 221 unmodified lines
591591 CONFIG_CRYPTO_USER_API_SKCIPHER=m
592592 CONFIG_CRYPTO_USER_API_RNG=m
593593 CONFIG_CRYPTO_USER_API_AEAD=m
594−CONFIG_CRYPTO_LIB_BLAKE2S=m
595−CONFIG_CRYPTO_LIB_CURVE25519=m
596−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
597594 # CONFIG_CRYPTO_HW is not set
598595 CONFIG_CRC32_SELFTEST=m
599596 CONFIG_CRC64=m
arch/m68k/configs/bvme6000_defconfig+1−4
@@ -166,7 +166,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 165 unmodified lines
166166 CONFIG_NETFILTER_XT_MATCH_OSF=m
167167 CONFIG_NETFILTER_XT_MATCH_OWNER=m
168168 CONFIG_NETFILTER_XT_MATCH_POLICY=m
169−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
170169 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
171170 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
172171 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -346,6 +345,7 @@ CONFIG_TCM_FILEIO=m · 173 unmodified lines
346345 CONFIG_TCM_PSCSI=m
347346 CONFIG_NETDEVICES=y
348347 CONFIG_DUMMY=m
348+CONFIG_WIREGUARD=m
349349 CONFIG_EQUALIZER=m
350350 CONFIG_NET_TEAM=m
351351 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -562,9 +562,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 210 unmodified lines
562562 CONFIG_CRYPTO_USER_API_SKCIPHER=m
563563 CONFIG_CRYPTO_USER_API_RNG=m
564564 CONFIG_CRYPTO_USER_API_AEAD=m
565−CONFIG_CRYPTO_LIB_BLAKE2S=m
566−CONFIG_CRYPTO_LIB_CURVE25519=m
567−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
568565 # CONFIG_CRYPTO_HW is not set
569566 CONFIG_CRC32_SELFTEST=m
570567 CONFIG_CRC64=m
arch/m68k/configs/hp300_defconfig+1−4
@@ -168,7 +168,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 167 unmodified lines
168168 CONFIG_NETFILTER_XT_MATCH_OSF=m
169169 CONFIG_NETFILTER_XT_MATCH_OWNER=m
170170 CONFIG_NETFILTER_XT_MATCH_POLICY=m
171−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
172171 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
173172 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
174173 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -347,6 +346,7 @@ CONFIG_TCM_FILEIO=m · 172 unmodified lines
347346 CONFIG_TCM_PSCSI=m
348347 CONFIG_NETDEVICES=y
349348 CONFIG_DUMMY=m
349+CONFIG_WIREGUARD=m
350350 CONFIG_EQUALIZER=m
351351 CONFIG_NET_TEAM=m
352352 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -571,9 +571,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 218 unmodified lines
571571 CONFIG_CRYPTO_USER_API_SKCIPHER=m
572572 CONFIG_CRYPTO_USER_API_RNG=m
573573 CONFIG_CRYPTO_USER_API_AEAD=m
574−CONFIG_CRYPTO_LIB_BLAKE2S=m
575−CONFIG_CRYPTO_LIB_CURVE25519=m
576−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
577574 # CONFIG_CRYPTO_HW is not set
578575 CONFIG_CRC32_SELFTEST=m
579576 CONFIG_CRC64=m
arch/m68k/configs/mac_defconfig+1−4
@@ -167,7 +167,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 166 unmodified lines
167167 CONFIG_NETFILTER_XT_MATCH_OSF=m
168168 CONFIG_NETFILTER_XT_MATCH_OWNER=m
169169 CONFIG_NETFILTER_XT_MATCH_POLICY=m
170−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
171170 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
172171 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
173172 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -363,6 +362,7 @@ CONFIG_INPUT_ADBHID=y · 189 unmodified lines
363362 CONFIG_MAC_EMUMOUSEBTN=y
364363 CONFIG_NETDEVICES=y
365364 CONFIG_DUMMY=m
365+CONFIG_WIREGUARD=m
366366 CONFIG_EQUALIZER=m
367367 CONFIG_NET_TEAM=m
368368 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -593,9 +593,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 224 unmodified lines
593593 CONFIG_CRYPTO_USER_API_SKCIPHER=m
594594 CONFIG_CRYPTO_USER_API_RNG=m
595595 CONFIG_CRYPTO_USER_API_AEAD=m
596−CONFIG_CRYPTO_LIB_BLAKE2S=m
597−CONFIG_CRYPTO_LIB_CURVE25519=m
598−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
599596 # CONFIG_CRYPTO_HW is not set
600597 CONFIG_CRC32_SELFTEST=m
601598 CONFIG_CRC64=m
arch/m68k/configs/multi_defconfig+1−4
@@ -187,7 +187,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 186 unmodified lines
187187 CONFIG_NETFILTER_XT_MATCH_OSF=m
188188 CONFIG_NETFILTER_XT_MATCH_OWNER=m
189189 CONFIG_NETFILTER_XT_MATCH_POLICY=m
190−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
191190 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
192191 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
193192 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -407,6 +406,7 @@ CONFIG_INPUT_ADBHID=y · 213 unmodified lines
407406 CONFIG_MAC_EMUMOUSEBTN=y
408407 CONFIG_NETDEVICES=y
409408 CONFIG_DUMMY=m
409+CONFIG_WIREGUARD=m
410410 CONFIG_EQUALIZER=m
411411 CONFIG_NET_TEAM=m
412412 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -679,9 +679,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 266 unmodified lines
679679 CONFIG_CRYPTO_USER_API_SKCIPHER=m
680680 CONFIG_CRYPTO_USER_API_RNG=m
681681 CONFIG_CRYPTO_USER_API_AEAD=m
682−CONFIG_CRYPTO_LIB_BLAKE2S=m
683−CONFIG_CRYPTO_LIB_CURVE25519=m
684−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
685682 # CONFIG_CRYPTO_HW is not set
686683 CONFIG_CRC32_SELFTEST=m
687684 CONFIG_CRC64=m
arch/m68k/configs/mvme147_defconfig+1−4
@@ -165,7 +165,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 164 unmodified lines
165165 CONFIG_NETFILTER_XT_MATCH_OSF=m
166166 CONFIG_NETFILTER_XT_MATCH_OWNER=m
167167 CONFIG_NETFILTER_XT_MATCH_POLICY=m
168−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
169168 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
170169 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
171170 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -345,6 +344,7 @@ CONFIG_TCM_FILEIO=m · 173 unmodified lines
345344 CONFIG_TCM_PSCSI=m
346345 CONFIG_NETDEVICES=y
347346 CONFIG_DUMMY=m
347+CONFIG_WIREGUARD=m
348348 CONFIG_EQUALIZER=m
349349 CONFIG_NET_TEAM=m
350350 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -561,9 +561,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 210 unmodified lines
561561 CONFIG_CRYPTO_USER_API_SKCIPHER=m
562562 CONFIG_CRYPTO_USER_API_RNG=m
563563 CONFIG_CRYPTO_USER_API_AEAD=m
564−CONFIG_CRYPTO_LIB_BLAKE2S=m
565−CONFIG_CRYPTO_LIB_CURVE25519=m
566−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
567564 # CONFIG_CRYPTO_HW is not set
568565 CONFIG_CRC32_SELFTEST=m
569566 CONFIG_CRC64=m
arch/m68k/configs/mvme16x_defconfig+1−4
@@ -166,7 +166,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 165 unmodified lines
166166 CONFIG_NETFILTER_XT_MATCH_OSF=m
167167 CONFIG_NETFILTER_XT_MATCH_OWNER=m
168168 CONFIG_NETFILTER_XT_MATCH_POLICY=m
169−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
170169 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
171170 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
172171 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -346,6 +345,7 @@ CONFIG_TCM_FILEIO=m · 173 unmodified lines
346345 CONFIG_TCM_PSCSI=m
347346 CONFIG_NETDEVICES=y
348347 CONFIG_DUMMY=m
348+CONFIG_WIREGUARD=m
349349 CONFIG_EQUALIZER=m
350350 CONFIG_NET_TEAM=m
351351 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -562,9 +562,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 210 unmodified lines
562562 CONFIG_CRYPTO_USER_API_SKCIPHER=m
563563 CONFIG_CRYPTO_USER_API_RNG=m
564564 CONFIG_CRYPTO_USER_API_AEAD=m
565−CONFIG_CRYPTO_LIB_BLAKE2S=m
566−CONFIG_CRYPTO_LIB_CURVE25519=m
567−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
568565 # CONFIG_CRYPTO_HW is not set
569566 CONFIG_CRC32_SELFTEST=m
570567 CONFIG_CRC64=m
arch/m68k/configs/q40_defconfig+1−4
@@ -167,7 +167,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 166 unmodified lines
167167 CONFIG_NETFILTER_XT_MATCH_OSF=m
168168 CONFIG_NETFILTER_XT_MATCH_OWNER=m
169169 CONFIG_NETFILTER_XT_MATCH_POLICY=m
170−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
171170 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
172171 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
173172 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -353,6 +352,7 @@ CONFIG_TCM_FILEIO=m · 179 unmodified lines
353352 CONFIG_TCM_PSCSI=m
354353 CONFIG_NETDEVICES=y
355354 CONFIG_DUMMY=m
355+CONFIG_WIREGUARD=m
356356 CONFIG_EQUALIZER=m
357357 CONFIG_NET_TEAM=m
358358 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -580,9 +580,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 221 unmodified lines
580580 CONFIG_CRYPTO_USER_API_SKCIPHER=m
581581 CONFIG_CRYPTO_USER_API_RNG=m
582582 CONFIG_CRYPTO_USER_API_AEAD=m
583−CONFIG_CRYPTO_LIB_BLAKE2S=m
584−CONFIG_CRYPTO_LIB_CURVE25519=m
585−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
586583 # CONFIG_CRYPTO_HW is not set
587584 CONFIG_CRC32_SELFTEST=m
588585 CONFIG_CRC64=m
arch/m68k/configs/sun3_defconfig+1−4
@@ -163,7 +163,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 162 unmodified lines
163163 CONFIG_NETFILTER_XT_MATCH_OSF=m
164164 CONFIG_NETFILTER_XT_MATCH_OWNER=m
165165 CONFIG_NETFILTER_XT_MATCH_POLICY=m
166−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
167166 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
168167 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
169168 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -343,6 +342,7 @@ CONFIG_TCM_FILEIO=m · 173 unmodified lines
343342 CONFIG_TCM_PSCSI=m
344343 CONFIG_NETDEVICES=y
345344 CONFIG_DUMMY=m
345+CONFIG_WIREGUARD=m
346346 CONFIG_EQUALIZER=m
347347 CONFIG_NET_TEAM=m
348348 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -564,9 +564,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 215 unmodified lines
564564 CONFIG_CRYPTO_USER_API_SKCIPHER=m
565565 CONFIG_CRYPTO_USER_API_RNG=m
566566 CONFIG_CRYPTO_USER_API_AEAD=m
567−CONFIG_CRYPTO_LIB_BLAKE2S=m
568−CONFIG_CRYPTO_LIB_CURVE25519=m
569−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
570567 # CONFIG_CRYPTO_HW is not set
571568 CONFIG_CRC32_SELFTEST=m
572569 CONFIG_CRC64=m
arch/m68k/configs/sun3x_defconfig+1−4
@@ -163,7 +163,6 @@ CONFIG_NETFILTER_XT_MATCH_NFACCT=m · 162 unmodified lines
163163 CONFIG_NETFILTER_XT_MATCH_OSF=m
164164 CONFIG_NETFILTER_XT_MATCH_OWNER=m
165165 CONFIG_NETFILTER_XT_MATCH_POLICY=m
166−CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
167166 CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
168167 CONFIG_NETFILTER_XT_MATCH_QUOTA=m
169168 CONFIG_NETFILTER_XT_MATCH_RATEEST=m
@@ -343,6 +342,7 @@ CONFIG_TCM_FILEIO=m · 173 unmodified lines
343342 CONFIG_TCM_PSCSI=m
344343 CONFIG_NETDEVICES=y
345344 CONFIG_DUMMY=m
345+CONFIG_WIREGUARD=m
346346 CONFIG_EQUALIZER=m
347347 CONFIG_NET_TEAM=m
348348 CONFIG_NET_TEAM_MODE_BROADCAST=m
@@ -563,9 +563,6 @@ CONFIG_CRYPTO_USER_API_HASH=m · 214 unmodified lines
563563 CONFIG_CRYPTO_USER_API_SKCIPHER=m
564564 CONFIG_CRYPTO_USER_API_RNG=m
565565 CONFIG_CRYPTO_USER_API_AEAD=m
566−CONFIG_CRYPTO_LIB_BLAKE2S=m
567−CONFIG_CRYPTO_LIB_CURVE25519=m
568−CONFIG_CRYPTO_LIB_CHACHA20POLY1305=m
569566 # CONFIG_CRYPTO_HW is not set
570567 CONFIG_CRC32_SELFTEST=m
571568 CONFIG_CRC64=m
arch/m68k/include/asm/Kbuild+1−0
@@ -8,6 +8,7 @@ generic-y += emergency-restart.h · 7 unmodified lines
88 generic-y += exec.h
99 generic-y += extable.h
1010 generic-y += futex.h
11+generic-y += hardirq.h
1112 generic-y += hw_irq.h
1213 generic-y += irq_regs.h
1314 generic-y += irq_work.h
arch/m68k/include/asm/hardirq.h+0−29
@@ -1,29 +0,0 @@
1−/* SPDX-License-Identifier: GPL-2.0 */
2−#ifndef __M68K_HARDIRQ_H
3−#define __M68K_HARDIRQ_H
4−
5−#include <linux/threads.h>
6−#include <linux/cache.h>
7−#include <asm/irq.h>
8−
9−#ifdef CONFIG_MMU
10−
11−static inline void ack_bad_irq(unsigned int irq)
12−{
13− pr_crit("unexpected IRQ trap at vector %02x\n", irq);
14−}
15−
16−/* entry.S is sensitive to the offsets of these fields */
17−typedef struct {
18− unsigned int __softirq_pending;
19−} ____cacheline_aligned irq_cpustat_t;
20−
21−#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
22−
23−#else
24−
25−#include <asm-generic/hardirq.h>
26−
27−#endif /* !CONFIG_MMU */
28−
29−#endif
arch/m68k/include/asm/mcf_pgalloc.h+14−17
@@ -28,21 +28,22 @@ extern inline pmd_t *pmd_alloc_kernel(pgd_t *pgd, unsigned long address) · 27 unmodified lines
2828 return (pmd_t *) pgd;
2929 }
3030
31−#define pmd_populate(mm, pmd, page) (pmd_val(*pmd) = \
32− (unsigned long)(page_address(page)))
31+#define pmd_populate(mm, pmd, pte) (pmd_val(*pmd) = (unsigned long)(pte))
3332
34−#define pmd_populate_kernel(mm, pmd, pte) (pmd_val(*pmd) = (unsigned long)(pte))
33+#define pmd_populate_kernel pmd_populate
3534
36−#define pmd_pgtable(pmd) pmd_page(pmd)
35+#define pmd_pgtable(pmd) pfn_to_virt(pmd_val(pmd) >> PAGE_SHIFT)
3736
38−static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t page,
37+static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pgtable,
3938 unsigned long address)
4039 {
40+ struct page *page = virt_to_page(pgtable);
41+
4142 pgtable_pte_page_dtor(page);
4243 __free_page(page);
4344 }
4445
45−static inline struct page *pte_alloc_one(struct mm_struct *mm)
46+static inline pgtable_t pte_alloc_one(struct mm_struct *mm)
4647 {
4748 struct page *page = alloc_pages(GFP_DMA, 0);
4849 pte_t *pte;
@@ -54,20 +55,16 @@ static inline struct page *pte_alloc_one(struct mm_struct *mm) · 5 unmodified lines
5455 return NULL;
5556 }
5657
57− pte = kmap(page);
58− if (pte) {
59− clear_page(pte);
60− __flush_page_to_ram(pte);
61− flush_tlb_kernel_page(pte);
62− nocache_page(pte);
63− }
64− kunmap(page);
58+ pte = page_address(page);
59+ clear_page(pte);
6560
66− return page;
61+ return pte;
6762 }
6863
69−static inline void pte_free(struct mm_struct *mm, struct page *page)
64+static inline void pte_free(struct mm_struct *mm, pgtable_t pgtable)
7065 {
66+ struct page *page = virt_to_page(pgtable);
67+
7168 pgtable_pte_page_dtor(page);
7269 __free_page(page);
7370 }
@@ -90,7 +87,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) · 16 unmodified lines
9087 new_pgd = (pgd_t *)__get_free_page(GFP_DMA | __GFP_NOWARN);
9188 if (!new_pgd)
9289 return NULL;
93− memcpy(new_pgd, swapper_pg_dir, PAGE_SIZE);
90+ memcpy(new_pgd, swapper_pg_dir, PTRS_PER_PGD * sizeof(pgd_t));
9491 memset(new_pgd, 0, PAGE_OFFSET >> PGDIR_SHIFT);
9592 return new_pgd;
9693 }
arch/m68k/include/asm/motorola_pgalloc.h+26−48
@@ -5,93 +5,71 @@ · 4 unmodified lines
55 #include <asm/tlb.h>
66 #include <asm/tlbflush.h>
77
8−extern pmd_t *get_pointer_table(void);
9−extern int free_pointer_table(pmd_t *);
8+extern void mmu_page_ctor(void *page);
9+extern void mmu_page_dtor(void *page);
1010
11−static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
12−{
13− pte_t *pte;
11+enum m68k_table_types {
12+ TABLE_PGD = 0,
13+ TABLE_PMD = 0, /* same size as PGD */
14+ TABLE_PTE = 1,
15+};
1416
15− pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_ZERO);
16− if (pte) {
17− __flush_page_to_ram(pte);
18− flush_tlb_kernel_page(pte);
19− nocache_page(pte);
20− }
17+extern void init_pointer_table(void *table, int type);
18+extern void *get_pointer_table(int type);
19+extern int free_pointer_table(void *table, int type);
2120
22− return pte;
21+static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
22+{
23+ return get_pointer_table(TABLE_PTE);
2324 }
2425
2526 static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
2627 {
27− cache_page(pte);
28− free_page((unsigned long) pte);
28+ free_pointer_table(pte, TABLE_PTE);
2929 }
3030
3131 static inline pgtable_t pte_alloc_one(struct mm_struct *mm)
3232 {
33− struct page *page;
34− pte_t *pte;
35−
36− page = alloc_pages(GFP_KERNEL|__GFP_ZERO, 0);
37− if(!page)
38− return NULL;
39− if (!pgtable_pte_page_ctor(page)) {
40− __free_page(page);
41− return NULL;
42− }
43−
44− pte = kmap(page);
45− __flush_page_to_ram(pte);
46− flush_tlb_kernel_page(pte);
47− nocache_page(pte);
48− kunmap(page);
49− return page;
33+ return get_pointer_table(TABLE_PTE);
5034 }
5135
52−static inline void pte_free(struct mm_struct *mm, pgtable_t page)
36+static inline void pte_free(struct mm_struct *mm, pgtable_t pgtable)
5337 {
54− pgtable_pte_page_dtor(page);
55− cache_page(kmap(page));
56− kunmap(page);
57− __free_page(page);
38+ free_pointer_table(pgtable, TABLE_PTE);
5839 }
5940
60−static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t page,
41+static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pgtable,
6142 unsigned long address)
6243 {
63− pgtable_pte_page_dtor(page);
64− cache_page(kmap(page));
65− kunmap(page);
66− __free_page(page);
44+ free_pointer_table(pgtable, TABLE_PTE);
6745 }
6846
6947
7048 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
7149 {
72− return get_pointer_table();
50+ return get_pointer_table(TABLE_PMD);
7351 }
7452
7553 static inline int pmd_free(struct mm_struct *mm, pmd_t *pmd)
7654 {
77− return free_pointer_table(pmd);
55+ return free_pointer_table(pmd, TABLE_PMD);
7856 }
7957
8058 static inline int __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
8159 unsigned long address)
8260 {
83− return free_pointer_table(pmd);
61+ return free_pointer_table(pmd, TABLE_PMD);
8462 }
8563
8664
8765 static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
8866 {
89− pmd_free(mm, (pmd_t *)pgd);
67+ free_pointer_table(pgd, TABLE_PGD);
9068 }
9169
9270 static inline pgd_t *pgd_alloc(struct mm_struct *mm)
9371 {
94− return (pgd_t *)get_pointer_table();
72+ return get_pointer_table(TABLE_PGD);
9573 }
9674
9775
@@ -102,9 +80,9 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t * · 4 unmodified lines
10280
10381 static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t page)
10482 {
105− pmd_set(pmd, page_address(page));
83+ pmd_set(pmd, page);
10684 }
107−#define pmd_pgtable(pmd) pmd_page(pmd)
85+#define pmd_pgtable(pmd) ((pgtable_t)__pmd_page(pmd))
10886
10987 static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
11088 {
arch/m68k/include/asm/motorola_pgtable.h+21−15
@@ -23,7 +23,18 @@ · 22 unmodified lines
2323 #define _DESCTYPE_MASK 0x003
2424
2525 #define _CACHEMASK040 (~0x060)
26−#define _TABLE_MASK (0xfffffe00)
26+
27+/*
28+ * Currently set to the minimum alignment of table pointers (256 bytes).
29+ * The hardware only uses the low 4 bits for state:
30+ *
31+ * 3 - Used
32+ * 2 - Write Protected
33+ * 0,1 - Descriptor Type
34+ *
35+ * and has the rest of the bits reserved.
36+ */
37+#define _TABLE_MASK (0xffffff00)
2738
2839 #define _PAGE_TABLE (_PAGE_SHORT)
2940 #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_NOCACHE)
@@ -108,13 +119,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) · 78 unmodified lines
108119
109120 static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
110121 {
111− unsigned long ptbl = virt_to_phys(ptep) | _PAGE_TABLE | _PAGE_ACCESSED;
112− unsigned long *ptr = pmdp->pmd;
113− short i = 16;
114− while (--i >= 0) {
115− *ptr++ = ptbl;
116− ptbl += (sizeof(pte_t)*PTRS_PER_PTE/16);
117− }
122+ pmd_val(*pmdp) = virt_to_phys(ptep) | _PAGE_TABLE | _PAGE_ACCESSED;
118123 }
119124
120125 static inline void pud_set(pud_t *pudp, pmd_t *pmdp)
@@ -138,13 +143,14 @@ static inline void pud_set(pud_t *pudp, pmd_t *pmdp) · 17 unmodified lines
138143 #define pmd_none(pmd) (!pmd_val(pmd))
139144 #define pmd_bad(pmd) ((pmd_val(pmd) & _DESCTYPE_MASK) != _PAGE_TABLE)
140145 #define pmd_present(pmd) (pmd_val(pmd) & _PAGE_TABLE)
141−#define pmd_clear(pmdp) ({ \
142− unsigned long *__ptr = pmdp->pmd; \
143− short __i = 16; \
144− while (--__i >= 0) \
145− *__ptr++ = 0; \
146−})
147−#define pmd_page(pmd) virt_to_page(__va(pmd_val(pmd)))
146+#define pmd_clear(pmdp) ({ pmd_val(*pmdp) = 0; })
147+
148+/*
149+ * m68k does not have huge pages (020/030 actually could), but generic code
150+ * expects pmd_page() to exists, only to then DCE it all. Provide a dummy to
151+ * make the compiler happy.
152+ */
153+#define pmd_page(pmd) NULL
148154
149155
150156 #define pud_none(pud) (!pud_val(pud))
arch/m68k/include/asm/page.h+13−3
@@ -22,15 +22,25 @@ · 21 unmodified lines
2222 * These are used to make use of C type-checking..
2323 */
2424 #if !defined(CONFIG_MMU) || CONFIG_PGTABLE_LEVELS == 3
25−typedef struct { unsigned long pmd[16]; } pmd_t;
26−#define pmd_val(x) ((&x)->pmd[0])
27−#define __pmd(x) ((pmd_t) { { (x) }, })
25+typedef struct { unsigned long pmd; } pmd_t;
26+#define pmd_val(x) ((&x)->pmd)
27+#define __pmd(x) ((pmd_t) { (x) } )
2828 #endif
2929
3030 typedef struct { unsigned long pte; } pte_t;
3131 typedef struct { unsigned long pgd; } pgd_t;
3232 typedef struct { unsigned long pgprot; } pgprot_t;
33+
34+#if defined(CONFIG_SUN3)
35+/*
36+ * Sun3 still uses the asm-generic/pgalloc.h code and thus needs this
37+ * definition. It would be possible to unify Sun3 and ColdFire pgalloc and have
38+ * all of m68k use the same type.
39+ */
3340 typedef struct page *pgtable_t;
41+#else
42+typedef pte_t *pgtable_t;
43+#endif
3444
3545 #define pte_val(x) ((x).pte)
3646 #define pgd_val(x) ((x).pgd)
arch/m68k/include/asm/pgtable_mm.h+5−5
@@ -36,7 +36,7 @@ · 35 unmodified lines
3636
3737 /* PMD_SHIFT determines the size of the area a second-level page table can map */
3838 #if CONFIG_PGTABLE_LEVELS == 3
39−#define PMD_SHIFT 22
39+#define PMD_SHIFT 18
4040 #endif
4141 #define PMD_SIZE (1UL << PMD_SHIFT)
4242 #define PMD_MASK (~(PMD_SIZE-1))
@@ -67,8 +67,8 @@ · 24 unmodified lines
6767 #define PTRS_PER_PMD 1
6868 #define PTRS_PER_PGD 1024
6969 #else
70−#define PTRS_PER_PTE 1024
71−#define PTRS_PER_PMD 8
70+#define PTRS_PER_PTE 64
71+#define PTRS_PER_PMD 128
7272 #define PTRS_PER_PGD 128
7373 #endif
7474 #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE)
@@ -76,8 +76,8 @@ · 1 unmodified line
7676
7777 /* Virtual address region for use by kernel_map() */
7878 #ifdef CONFIG_SUN3
79−#define KMAP_START 0x0DC00000
80−#define KMAP_END 0x0E000000
79+#define KMAP_START 0x0dc00000
80+#define KMAP_END 0x0e000000
8181 #elif defined(CONFIG_COLDFIRE)
8282 #define KMAP_START 0xe0000000
8383 #define KMAP_END 0xf0000000
arch/m68k/mm/init.c+20−14
@@ -40,11 +40,6 @@ · 39 unmodified lines
4040 void *empty_zero_page;
4141 EXPORT_SYMBOL(empty_zero_page);
4242
43−#if !defined(CONFIG_SUN3) && !defined(CONFIG_COLDFIRE)
44−extern void init_pointer_table(unsigned long ptable);
45−extern pmd_t *zero_pgtable;
46−#endif
47−
4843 #ifdef CONFIG_MMU
4944
5045 pg_data_t pg_data_map[MAX_NUMNODES];
@@ -125,20 +120,31 @@ void free_initmem(void) · 74 unmodified lines
125120 static inline void init_pointer_tables(void)
126121 {
127122 #if defined(CONFIG_MMU) && !defined(CONFIG_SUN3) && !defined(CONFIG_COLDFIRE)
128− int i;
123+ int i, j;
129124
130125 /* insert pointer tables allocated so far into the tablelist */
131− init_pointer_table((unsigned long)kernel_pg_dir);
126+ init_pointer_table(kernel_pg_dir, TABLE_PGD);
132127 for (i = 0; i < PTRS_PER_PGD; i++) {
133− pud_t *pud = (pud_t *)(&kernel_pg_dir[i]);
128+ pud_t *pud = (pud_t *)&kernel_pg_dir[i];
129+ pmd_t *pmd_dir;
134130
135− if (pud_present(*pud))
136− init_pointer_table(pgd_page_vaddr(kernel_pg_dir[i]));
137− }
131+ if (!pud_present(*pud))
132+ continue;
133+
134+ pmd_dir = (pmd_t *)pgd_page_vaddr(kernel_pg_dir[i]);
135+ init_pointer_table(pmd_dir, TABLE_PMD);
138136
139− /* insert also pointer table that we used to unmap the zero page */
140− if (zero_pgtable)
141− init_pointer_table((unsigned long)zero_pgtable);
137+ for (j = 0; j < PTRS_PER_PMD; j++) {
138+ pmd_t *pmd = &pmd_dir[j];
139+ pte_t *pte_dir;
140+
141+ if (!pmd_present(*pmd))
142+ continue;
143+
144+ pte_dir = (pte_t *)__pmd_page(*pmd);
145+ init_pointer_table(pte_dir, TABLE_PTE);
146+ }
147+ }
142148 #endif
143149 }
144150
arch/m68k/mm/kmap.c+16−20
@@ -24,8 +24,6 @@ · 23 unmodified lines
2424
2525 #undef DEBUG
2626
27−#define PTRTREESIZE (256*1024)
28−
2927 /*
3028 * For 040/060 we can use the virtual memory area like other architectures,
3129 * but for 020/030 we want to use early termination page descriptors and we
@@ -50,7 +48,7 @@ static inline void free_io_area(void *addr) · 18 unmodified lines
5048
5149 #else
5250
53−#define IO_SIZE (256*1024)
51+#define IO_SIZE PMD_SIZE
5452
5553 static struct vm_struct *iolist;
5654
@@ -81,14 +79,13 @@ static void __free_io_area(void *addr, unsigned long size) · 24 unmodified lines
8179
8280 #if CONFIG_PGTABLE_LEVELS == 3
8381 if (CPU_IS_020_OR_030) {
84− int pmd_off = (virtaddr/PTRTREESIZE) & 15;
85− int pmd_type = pmd_dir->pmd[pmd_off] & _DESCTYPE_MASK;
82+ int pmd_type = pmd_val(*pmd_dir) & _DESCTYPE_MASK;
8683
8784 if (pmd_type == _PAGE_PRESENT) {
88− pmd_dir->pmd[pmd_off] = 0;
89− virtaddr += PTRTREESIZE;
90− size -= PTRTREESIZE;
91− continue;
85+ pmd_clear(pmd_dir);
86+ virtaddr += PMD_SIZE;
87+ size -= PMD_SIZE;
88+
9289 } else if (pmd_type == 0)
9390 continue;
9491 }
@@ -249,7 +246,7 @@ void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cachefla · 154 unmodified lines
249246
250247 while ((long)size > 0) {
251248 #ifdef DEBUG
252− if (!(virtaddr & (PTRTREESIZE-1)))
249+ if (!(virtaddr & (PMD_SIZE-1)))
253250 printk ("\npa=%#lx va=%#lx ", physaddr, virtaddr);
254251 #endif
255252 pgd_dir = pgd_offset_k(virtaddr);
@@ -263,10 +260,10 @@ void __iomem *__ioremap(unsigned long physaddr, unsigned long size, int cachefla · 7 unmodified lines
263260
264261 #if CONFIG_PGTABLE_LEVELS == 3
265262 if (CPU_IS_020_OR_030) {
266− pmd_dir->pmd[(virtaddr/PTRTREESIZE) & 15] = physaddr;
267− physaddr += PTRTREESIZE;
268− virtaddr += PTRTREESIZE;
269− size -= PTRTREESIZE;
263+ pmd_val(*pmd_dir) = physaddr;
264+ physaddr += PMD_SIZE;
265+ virtaddr += PMD_SIZE;
266+ size -= PMD_SIZE;
270267 } else
271268 #endif
272269 {
@@ -367,13 +364,12 @@ void kernel_set_cachemode(void *addr, unsigned long size, int cmode) · 94 unmodified lines
367364
368365 #if CONFIG_PGTABLE_LEVELS == 3
369366 if (CPU_IS_020_OR_030) {
370− int pmd_off = (virtaddr/PTRTREESIZE) & 15;
367+ unsigned long pmd = pmd_val(*pmd_dir);
371368
372− if ((pmd_dir->pmd[pmd_off] & _DESCTYPE_MASK) == _PAGE_PRESENT) {
373− pmd_dir->pmd[pmd_off] = (pmd_dir->pmd[pmd_off] &
374− _CACHEMASK040) | cmode;
375− virtaddr += PTRTREESIZE;
376− size -= PTRTREESIZE;
369+ if ((pmd & _DESCTYPE_MASK) == _PAGE_PRESENT) {
370+ *pmd_dir = __pmd((pmd & _CACHEMASK040) | cmode);
371+ virtaddr += PMD_SIZE;
372+ size -= PMD_SIZE;
377373 continue;
378374 }
379375 }
arch/m68k/mm/memory.c+0−103
@@ -22,109 +22,6 @@ · 21 unmodified lines
2222 #include <asm/machdep.h>
2323
2424
25−/* ++andreas: {get,free}_pointer_table rewritten to use unused fields from
26− struct page instead of separately kmalloced struct. Stolen from
27− arch/sparc/mm/srmmu.c ... */
28−
29−typedef struct list_head ptable_desc;
30−static LIST_HEAD(ptable_list);
31−
32−#define PD_PTABLE(page) ((ptable_desc *)&(virt_to_page(page)->lru))
33−#define PD_PAGE(ptable) (list_entry(ptable, struct page, lru))
34−#define PD_MARKBITS(dp) (*(unsigned char *)&PD_PAGE(dp)->index)
35−
36−#define PTABLE_SIZE (PTRS_PER_PMD * sizeof(pmd_t))
37−
38−void __init init_pointer_table(unsigned long ptable)
39−{
40− ptable_desc *dp;
41− unsigned long page = ptable & PAGE_MASK;
42− unsigned char mask = 1 << ((ptable - page)/PTABLE_SIZE);
43−
44− dp = PD_PTABLE(page);
45− if (!(PD_MARKBITS(dp) & mask)) {
46− PD_MARKBITS(dp) = 0xff;
47− list_add(dp, &ptable_list);
48− }
49−
50− PD_MARKBITS(dp) &= ~mask;
51− pr_debug("init_pointer_table: %lx, %x\n", ptable, PD_MARKBITS(dp));
52−
53− /* unreserve the page so it's possible to free that page */
54− __ClearPageReserved(PD_PAGE(dp));
55− init_page_count(PD_PAGE(dp));
56−
57− return;
58−}
59−
60−pmd_t *get_pointer_table (void)
61−{
62− ptable_desc *dp = ptable_list.next;
63− unsigned char mask = PD_MARKBITS (dp);
64− unsigned char tmp;
65− unsigned int off;
66−
67− /*
68− * For a pointer table for a user process address space, a
69− * table is taken from a page allocated for the purpose. Each
70− * page can hold 8 pointer tables. The page is remapped in
71− * virtual address space to be noncacheable.
72− */
73− if (mask == 0) {
74− void *page;
75− ptable_desc *new;
76−
77− if (!(page = (void *)get_zeroed_page(GFP_KERNEL)))
78− return NULL;
79−
80− flush_tlb_kernel_page(page);
81− nocache_page(page);
82−
83− new = PD_PTABLE(page);
84− PD_MARKBITS(new) = 0xfe;
85− list_add_tail(new, dp);
86−
87− return (pmd_t *)page;
88− }
89−
90− for (tmp = 1, off = 0; (mask & tmp) == 0; tmp <<= 1, off += PTABLE_SIZE)
91− ;
92− PD_MARKBITS(dp) = mask & ~tmp;
93− if (!PD_MARKBITS(dp)) {
94− /* move to end of list */
95− list_move_tail(dp, &ptable_list);
96− }
97− return (pmd_t *) (page_address(PD_PAGE(dp)) + off);
98−}
99−
100−int free_pointer_table (pmd_t *ptable)
101−{
102− ptable_desc *dp;
103− unsigned long page = (unsigned long)ptable & PAGE_MASK;
104− unsigned char mask = 1 << (((unsigned long)ptable - page)/PTABLE_SIZE);
105−
106− dp = PD_PTABLE(page);
107− if (PD_MARKBITS (dp) & mask)
108− panic ("table already free!");
109−
110− PD_MARKBITS (dp) |= mask;
111−
112− if (PD_MARKBITS(dp) == 0xff) {
113− /* all tables in page are free, free page */
114− list_del(dp);
115− cache_page((void *)page);
116− free_page (page);
117− return 1;
118− } else if (ptable_list.next != dp) {
119− /*
120− * move this descriptor to the front of the list, since
121− * it has one or more free tables.
122− */
123− list_move(dp, &ptable_list);
124− }
125− return 0;
126−}
127−
12825 /* invalidate page in both caches */
12926 static inline void clear040(unsigned long paddr)
13027 {
arch/m68k/mm/motorola.c+187−41
@@ -45,34 +45,185 @@ unsigned long mm_cachebits; · 44 unmodified lines
4545 EXPORT_SYMBOL(mm_cachebits);
4646 #endif
4747
48+
49+/*
50+ * Motorola 680x0 user's manual recommends using uncached memory for address
51+ * translation tables.
52+ *
53+ * Seeing how the MMU can be external on (some of) these chips, that seems like
54+ * a very important recommendation to follow. Provide some helpers to combat
55+ * 'variation' amongst the users of this.
56+ */
57+
58+void mmu_page_ctor(void *page)
59+{
60+ __flush_page_to_ram(page);
61+ flush_tlb_kernel_page(page);
62+ nocache_page(page);
63+}
64+
65+void mmu_page_dtor(void *page)
66+{
67+ cache_page(page);
68+}
69+
70+/* ++andreas: {get,free}_pointer_table rewritten to use unused fields from
71+ struct page instead of separately kmalloced struct. Stolen from
72+ arch/sparc/mm/srmmu.c ... */
73+
74+typedef struct list_head ptable_desc;
75+
76+static struct list_head ptable_list[2] = {
77+ LIST_HEAD_INIT(ptable_list[0]),
78+ LIST_HEAD_INIT(ptable_list[1]),
79+};
80+
81+#define PD_PTABLE(page) ((ptable_desc *)&(virt_to_page(page)->lru))
82+#define PD_PAGE(ptable) (list_entry(ptable, struct page, lru))
83+#define PD_MARKBITS(dp) (*(unsigned int *)&PD_PAGE(dp)->index)
84+
85+static const int ptable_shift[2] = {
86+ 7+2, /* PGD, PMD */
87+ 6+2, /* PTE */
88+};
89+
90+#define ptable_size(type) (1U << ptable_shift[type])
91+#define ptable_mask(type) ((1U << (PAGE_SIZE / ptable_size(type))) - 1)
92+
93+void __init init_pointer_table(void *table, int type)
94+{
95+ ptable_desc *dp;
96+ unsigned long ptable = (unsigned long)table;
97+ unsigned long page = ptable & PAGE_MASK;
98+ unsigned int mask = 1U << ((ptable - page)/ptable_size(type));
99+
100+ dp = PD_PTABLE(page);
101+ if (!(PD_MARKBITS(dp) & mask)) {
102+ PD_MARKBITS(dp) = ptable_mask(type);
103+ list_add(dp, &ptable_list[type]);
104+ }
105+
106+ PD_MARKBITS(dp) &= ~mask;
107+ pr_debug("init_pointer_table: %lx, %x\n", ptable, PD_MARKBITS(dp));
108+
109+ /* unreserve the page so it's possible to free that page */
110+ __ClearPageReserved(PD_PAGE(dp));
111+ init_page_count(PD_PAGE(dp));
112+
113+ return;
114+}
115+
116+void *get_pointer_table(int type)
117+{
118+ ptable_desc *dp = ptable_list[type].next;
119+ unsigned int mask = list_empty(&ptable_list[type]) ? 0 : PD_MARKBITS(dp);
120+ unsigned int tmp, off;
121+
122+ /*
123+ * For a pointer table for a user process address space, a
124+ * table is taken from a page allocated for the purpose. Each
125+ * page can hold 8 pointer tables. The page is remapped in
126+ * virtual address space to be noncacheable.
127+ */
128+ if (mask == 0) {
129+ void *page;
130+ ptable_desc *new;
131+
132+ if (!(page = (void *)get_zeroed_page(GFP_KERNEL)))
133+ return NULL;
134+
135+ if (type == TABLE_PTE) {
136+ /*
137+ * m68k doesn't have SPLIT_PTE_PTLOCKS for not having
138+ * SMP.
139+ */
140+ pgtable_pte_page_ctor(virt_to_page(page));
141+ }
142+
143+ mmu_page_ctor(page);
144+
145+ new = PD_PTABLE(page);
146+ PD_MARKBITS(new) = ptable_mask(type) - 1;
147+ list_add_tail(new, dp);
148+
149+ return (pmd_t *)page;
150+ }
151+
152+ for (tmp = 1, off = 0; (mask & tmp) == 0; tmp <<= 1, off += ptable_size(type))
153+ ;
154+ PD_MARKBITS(dp) = mask & ~tmp;
155+ if (!PD_MARKBITS(dp)) {
156+ /* move to end of list */
157+ list_move_tail(dp, &ptable_list[type]);
158+ }
159+ return page_address(PD_PAGE(dp)) + off;
160+}
161+
162+int free_pointer_table(void *table, int type)
163+{
164+ ptable_desc *dp;
165+ unsigned long ptable = (unsigned long)table;
166+ unsigned long page = ptable & PAGE_MASK;
167+ unsigned int mask = 1U << ((ptable - page)/ptable_size(type));
168+
169+ dp = PD_PTABLE(page);
170+ if (PD_MARKBITS (dp) & mask)
171+ panic ("table already free!");
172+
173+ PD_MARKBITS (dp) |= mask;
174+
175+ if (PD_MARKBITS(dp) == ptable_mask(type)) {
176+ /* all tables in page are free, free page */
177+ list_del(dp);
178+ mmu_page_dtor((void *)page);
179+ if (type == TABLE_PTE)
180+ pgtable_pte_page_dtor(virt_to_page(page));
181+ free_page (page);
182+ return 1;
183+ } else if (ptable_list[type].next != dp) {
184+ /*
185+ * move this descriptor to the front of the list, since
186+ * it has one or more free tables.
187+ */
188+ list_move(dp, &ptable_list[type]);
189+ }
190+ return 0;
191+}
192+
48193 /* size of memory already mapped in head.S */
49194 extern __initdata unsigned long m68k_init_mapped_size;
50195
51196 extern unsigned long availmem;
52197
198+static pte_t *last_pte_table __initdata = NULL;
199+
53200 static pte_t * __init kernel_page_table(void)
54201 {
55− pte_t *ptablep;
202+ pte_t *pte_table = last_pte_table;
56203
57− ptablep = (pte_t *)memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
58− if (!ptablep)
59− panic("%s: Failed to allocate %lu bytes align=%lx\n",
60− __func__, PAGE_SIZE, PAGE_SIZE);
204+ if (((unsigned long)last_pte_table & ~PAGE_MASK) == 0) {
205+ pte_table = (pte_t *)memblock_alloc_low(PAGE_SIZE, PAGE_SIZE);
206+ if (!pte_table) {
207+ panic("%s: Failed to allocate %lu bytes align=%lx\n",
208+ __func__, PAGE_SIZE, PAGE_SIZE);
209+ }
61210
62− clear_page(ptablep);
63− __flush_page_to_ram(ptablep);
64− flush_tlb_kernel_page(ptablep);
65− nocache_page(ptablep);
211+ clear_page(pte_table);
212+ mmu_page_ctor(pte_table);
66213
67− return ptablep;
214+ last_pte_table = pte_table;
215+ }
216+
217+ last_pte_table += PTRS_PER_PTE;
218+
219+ return pte_table;
68220 }
69221
70−static pmd_t *last_pgtable __initdata = NULL;
71−pmd_t *zero_pgtable __initdata = NULL;
222+static pmd_t *last_pmd_table __initdata = NULL;
72223
73224 static pmd_t * __init kernel_ptr_table(void)
74225 {
75− if (!last_pgtable) {
226+ if (!last_pmd_table) {
76227 unsigned long pmd, last;
77228 int i;
78229
@@ -91,33 +242,29 @@ static pmd_t * __init kernel_ptr_table(void) · 12 unmodified lines
91242 last = pmd;
92243 }
93244
94− last_pgtable = (pmd_t *)last;
245+ last_pmd_table = (pmd_t *)last;
95246 #ifdef DEBUG
96− printk("kernel_ptr_init: %p\n", last_pgtable);
247+ printk("kernel_ptr_init: %p\n", last_pmd_table);
97248 #endif
98249 }
99250
100− last_pgtable += PTRS_PER_PMD;
101− if (((unsigned long)last_pgtable & ~PAGE_MASK) == 0) {
102− last_pgtable = (pmd_t *)memblock_alloc_low(PAGE_SIZE,
251+ last_pmd_table += PTRS_PER_PMD;
252+ if (((unsigned long)last_pmd_table & ~PAGE_MASK) == 0) {
253+ last_pmd_table = (pmd_t *)memblock_alloc_low(PAGE_SIZE,
103254 PAGE_SIZE);
104− if (!last_pgtable)
255+ if (!last_pmd_table)
105256 panic("%s: Failed to allocate %lu bytes align=%lx\n",
106257 __func__, PAGE_SIZE, PAGE_SIZE);
107258
108− clear_page(last_pgtable);
109− __flush_page_to_ram(last_pgtable);
110− flush_tlb_kernel_page(last_pgtable);
111− nocache_page(last_pgtable);
259+ clear_page(last_pmd_table);
260+ mmu_page_ctor(last_pmd_table);
112261 }
113262
114− return last_pgtable;
263+ return last_pmd_table;
115264 }
116265
117266 static void __init map_node(int node)
118267 {
119−#define PTRTREESIZE (256*1024)
120−#define ROOTTREESIZE (32*1024*1024)
121268 unsigned long physaddr, virtaddr, size;
122269 pgd_t *pgd_dir;
123270 p4d_t *p4d_dir;
@@ -135,21 +282,21 @@ static void __init map_node(int node) · 11 unmodified lines
135282
136283 while (size > 0) {
137284 #ifdef DEBUG
138− if (!(virtaddr & (PTRTREESIZE-1)))
285+ if (!(virtaddr & (PMD_SIZE-1)))
139286 printk ("\npa=%#lx va=%#lx ", physaddr & PAGE_MASK,
140287 virtaddr);
141288 #endif
142289 pgd_dir = pgd_offset_k(virtaddr);
143290 if (virtaddr && CPU_IS_020_OR_030) {
144− if (!(virtaddr & (ROOTTREESIZE-1)) &&
145− size >= ROOTTREESIZE) {
291+ if (!(virtaddr & (PGDIR_SIZE-1)) &&
292+ size >= PGDIR_SIZE) {
146293 #ifdef DEBUG
147294 printk ("[very early term]");
148295 #endif
149296 pgd_val(*pgd_dir) = physaddr;
150− size -= ROOTTREESIZE;
151− virtaddr += ROOTTREESIZE;
152− physaddr += ROOTTREESIZE;
297+ size -= PGDIR_SIZE;
298+ virtaddr += PGDIR_SIZE;
299+ physaddr += PGDIR_SIZE;
153300 continue;
154301 }
155302 }
@@ -169,24 +316,23 @@ static void __init map_node(int node) · 13 unmodified lines
169316 #ifdef DEBUG
170317 printk ("[early term]");
171318 #endif
172− pmd_dir->pmd[(virtaddr/PTRTREESIZE) & 15] = physaddr;
173− physaddr += PTRTREESIZE;
319+ pmd_val(*pmd_dir) = physaddr;
320+ physaddr += PMD_SIZE;
174321 } else {
175322 int i;
176323 #ifdef DEBUG
177324 printk ("[zero map]");
178325 #endif
179− zero_pgtable = kernel_ptr_table();
180− pte_dir = (pte_t *)zero_pgtable;
181− pmd_dir->pmd[0] = virt_to_phys(pte_dir) |
182− _PAGE_TABLE | _PAGE_ACCESSED;
326+ pte_dir = kernel_page_table();
327+ pmd_set(pmd_dir, pte_dir);
328+
183329 pte_val(*pte_dir++) = 0;
184330 physaddr += PAGE_SIZE;
185− for (i = 1; i < 64; physaddr += PAGE_SIZE, i++)
331+ for (i = 1; i < PTRS_PER_PTE; physaddr += PAGE_SIZE, i++)
186332 pte_val(*pte_dir++) = physaddr;
187333 }
188− size -= PTRTREESIZE;
189− virtaddr += PTRTREESIZE;
334+ size -= PMD_SIZE;
335+ virtaddr += PMD_SIZE;
190336 } else {
191337 if (!pmd_present(*pmd_dir)) {
192338 #ifdef DEBUG
drivers/dio/dio-driver.c+4−5
@@ -25,7 +25,7 @@ · 24 unmodified lines
2525 * dio_device_id structure or %NULL if there is no match.
2626 */
2727
28−const struct dio_device_id *
28+static const struct dio_device_id *
2929 dio_match_device(const struct dio_device_id *ids,
3030 const struct dio_dev *d)
3131 {
@@ -105,9 +105,9 @@ void dio_unregister_driver(struct dio_driver *drv) · 73 unmodified lines
105105 * @dev: the DIO device structure to match against
106106 * @drv: the &device_driver that points to the array of DIO device id structures to search
107107 *
108− * Used by a driver to check whether a DIO device present in the
109− * system is in its list of supported devices. Returns the matching
110− * dio_device_id structure or %NULL if there is no match.
108+ * Used by the driver core to check whether a DIO device present in the
109+ * system is in a driver's list of supported devices. Returns 1 if supported,
110+ * and 0 if there is no match.
111111 */
112112
113113 static int dio_bus_match(struct device *dev, struct device_driver *drv)
@@ -137,7 +137,6 @@ static int __init dio_driver_init(void) · 23 unmodified lines
137137
138138 postcore_initcall(dio_driver_init);
139139
140−EXPORT_SYMBOL(dio_match_device);
141140 EXPORT_SYMBOL(dio_register_driver);
142141 EXPORT_SYMBOL(dio_unregister_driver);
143142 EXPORT_SYMBOL(dio_bus_type);
drivers/video/fbdev/c2p_core.h+6−6
@@ -12,6 +12,8 @@ · 11 unmodified lines
1212 * for more details.
1313 */
1414
15+#include <linux/build_bug.h>
16+
1517
1618 /*
1719 * Basic transpose step
@@ -27,8 +29,6 @@ static inline void _transp(u32 d[], unsigned int i1, unsigned int i2, · 9 unmodified lines
2729 }
2830
2931
30−extern void c2p_unsupported(void);
31−
3232 static __always_inline u32 get_mask(unsigned int n)
3333 {
3434 switch (n) {
@@ -48,7 +48,7 @@ static __always_inline u32 get_mask(unsigned int n) · 13 unmodified lines
4848 return 0x0000ffff;
4949 }
5050
51− c2p_unsupported();
51+ BUILD_BUG();
5252 return 0;
5353 }
5454
@@ -91,7 +91,7 @@ static __always_inline void transp8(u32 d[], unsigned int n, unsigned int m) · 36 unmodified lines
9191 return;
9292 }
9393
94− c2p_unsupported();
94+ BUILD_BUG();
9595 }
9696
9797
@@ -118,7 +118,7 @@ static __always_inline void transp4(u32 d[], unsigned int n, unsigned int m) · 20 unmodified lines
118118 return;
119119 }
120120
121− c2p_unsupported();
121+ BUILD_BUG();
122122 }
123123
124124
@@ -138,7 +138,7 @@ static __always_inline void transp4x(u32 d[], unsigned int n, unsigned int m) · 13 unmodified lines
138138 return;
139139 }
140140
141− c2p_unsupported();
141+ BUILD_BUG();
142142 }
143143
144144
drivers/zorro/zorro-driver.c+5−11
@@ -28,7 +28,7 @@ · 27 unmodified lines
2828 * zorro_device_id structure or %NULL if there is no match.
2929 */
3030
31−const struct zorro_device_id *
31+static const struct zorro_device_id *
3232 zorro_match_device(const struct zorro_device_id *ids,
3333 const struct zorro_dev *z)
3434 {
@@ -39,7 +39,6 @@ zorro_match_device(const struct zorro_device_id *ids, · 4 unmodified lines
3939 }
4040 return NULL;
4141 }
42−EXPORT_SYMBOL(zorro_match_device);
4342
4443
4544 static int zorro_device_probe(struct device *dev)
@@ -120,9 +119,9 @@ EXPORT_SYMBOL(zorro_unregister_driver); · 74 unmodified lines
120119 * @ids: array of Zorro device id structures to search in
121120 * @dev: the Zorro device structure to match against
122121 *
123− * Used by a driver to check whether a Zorro device present in the
124− * system is in its list of supported devices.Returns the matching
125− * zorro_device_id structure or %NULL if there is no match.
122+ * Used by the driver core to check whether a Zorro device present in the
123+ * system is in a driver's list of supported devices. Returns 1 if
124+ * supported, and 0 if there is no match.
126125 */
127126
128127 static int zorro_bus_match(struct device *dev, struct device_driver *drv)
@@ -134,12 +133,7 @@ static int zorro_bus_match(struct device *dev, struct device_driver *drv) · 5 unmodified lines
134133 if (!ids)
135134 return 0;
136135
137− while (ids->id) {
138− if (ids->id == ZORRO_WILDCARD || ids->id == z->id)
139− return 1;
140− ids++;
141− }
142− return 0;
136+ return !!zorro_match_device(ids, z);
143137 }
144138
145139 static int zorro_uevent(struct device *dev, struct kobj_uevent_env *env)
drivers/zorro/zorro.c+1−1
@@ -41,7 +41,7 @@ struct zorro_dev *zorro_autocon; · 40 unmodified lines
4141
4242 struct zorro_bus {
4343 struct device dev;
44− struct zorro_dev devices[0];
44+ struct zorro_dev devices[];
4545 };
4646
4747
drivers/zorro/zorro.h+7−0
@@ -1,5 +1,12 @@
11 /* SPDX-License-Identifier: GPL-2.0 */
22
3+ /*
4+ * Zorro bus
5+ */
6+
7+extern struct bus_type zorro_bus_type;
8+
9+
310 #ifdef CONFIG_ZORRO_NAMES
411 extern void zorro_name_device(struct zorro_dev *z);
512 #else
include/linux/dio.h+0−5
@@ -247,11 +247,6 @@ extern int dio_create_sysfs_dev_files(struct dio_dev *); · 246 unmodified lines
247247 /* New-style probing */
248248 extern int dio_register_driver(struct dio_driver *);
249249 extern void dio_unregister_driver(struct dio_driver *);
250−extern const struct dio_device_id *dio_match_device(const struct dio_device_id *ids, const struct dio_dev *z);
251−static inline struct dio_driver *dio_dev_driver(const struct dio_dev *d)
252−{
253− return d->driver;
254−}
255250
256251 #define dio_resource_start(d) ((d)->resource.start)
257252 #define dio_resource_end(d) ((d)->resource.end)
include/linux/zorro.h+0−12
@@ -40,13 +40,6 @@ struct zorro_dev { · 39 unmodified lines
4040 #define to_zorro_dev(n) container_of(n, struct zorro_dev, dev)
4141
4242
43− /*
44− * Zorro bus
45− */
46−
47−extern struct bus_type zorro_bus_type;
48−
49−
5043 /*
5144 * Zorro device drivers
5245 */
@@ -70,11 +63,6 @@ struct zorro_driver { · 17 unmodified lines
7063 /* New-style probing */
7164 extern int zorro_register_driver(struct zorro_driver *);
7265 extern void zorro_unregister_driver(struct zorro_driver *);
73−extern const struct zorro_device_id *zorro_match_device(const struct zorro_device_id *ids, const struct zorro_dev *z);
74−static inline struct zorro_driver *zorro_dev_driver(const struct zorro_dev *z)
75−{
76− return z->driver;
77−}
7866
7967
8068 extern unsigned int zorro_num_autocon; /* # of autoconfig devices found */