m68k patches for 2.6.28
Subsystems (9)
Geert Uytterhoeven
maintainercover m68k patches for 2.6.28
Hi Linus,
Here are the m68k patches I had queued up for the 2.6.28 merge window:
[01] [PATCH] m68k: use bcd2bin/bin2bcd
[02] [PATCH] m68k: Use new printk() extension %pS to print symbols
[03] [PATCH] m68k: Put .bss at the end of the data section
[04] [PATCH] m68k: Add NOTES to init data so it's discarded at boot
[05] [PATCH] m68k: Reverse platform MMU logic so Sun 3 is last
[06] [PATCH] m68k: Disable Amiga serial console support if modular
[07] [PATCH] m68k: Modular Amiga keyboard needs key_maps
[08] [PATCH] m68k: Remove unused atari_kbd_translate()
[09] [PATCH] m68k: Define rtc_lock on Atari
[10] [PATCH] m68k: Add missing dma_sync_single_range_for_{cpu,device}()
[11] [PATCH] m68k: <asm/pci.h> needs <asm-generic/pci-dma-compat.h>
[12] [PATCH] HP input: kill warnings due to suseconds_t differences
[13] [PATCH] m68k: Remove the broken Hades support
[14] [PATCH] m68k: remove the dead PCI code
[15] [PATCH] m68k: init_irq_proc depends on CONFIG_PROC_FS
[16] [PATCH] m68k: Atari SCSI needs NVRAM
[17] [PATCH] net/rfkill/rfkill-input.c needs <linux/sched.h>
[18] [PATCH] arch/m68k/mm/kmap.c: introduce missing kfree
All of them have been reviewed before.
All of them (except for the last one) have been braising in linux-next for a while.
Thanks for applying!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Geert Uytterhoeven
maintainerPATCH 1/18 m68k: use bcd2bin/bin2bcd
From: Adrian Bunk <[email protected]>
This patch changes m68k to use the new bcd2bin/bin2bcd functions instead of the obsolete BCD_TO_BIN/BIN_TO_BCD/BCD2BIN/BIN2BCD macros.
It also remove local bcd2bin/bin2bcd implementations in favor of the global ones.
---
arch/m68k/atari/time.c | 35 ++++++++++++++++++----------------- arch/m68k/bvme6000/config.c | 15 +-------------- arch/m68k/bvme6000/rtc.c | 30 +++++++++++++++--------------- arch/m68k/mvme16x/rtc.c | 26 +++++++++++++------------- arch/m68k/q40/config.c | 12 +----------- arch/m68k/sun3x/time.c | 28 ++++++++++++++-------------- 6 files changed, 62 insertions(+), 84 deletions(-)
7967e50519a24d3c87e55e7a5af8b71dd2dd618d
arch/m68k/atari/time.c +18 -17
@@ -191,13 +191,14 @@ int atari_tt_hwclk( int op, struct rtc_t }if (!(ctrl &RTC_DM_BINARY )) { -BIN_TO_BCD (sec); -BIN_TO_BCD (min); -BIN_TO_BCD (hour); -BIN_TO_BCD (day); -BIN_TO_BCD (mon); -BIN_TO_BCD (year); -if (wday >=0 )BIN_TO_BCD (wday); + sec =bin2bcd (sec); + min =bin2bcd (min); + hour =bin2bcd (hour); + day =bin2bcd (day); + mon =bin2bcd (mon); + year =bin2bcd (year); +if (wday >=0 ) + wday =bin2bcd (wday); } }
@@ -252,13 +253,13 @@ int atari_tt_hwclk( int op, struct rtc_t }if (!(ctrl &RTC_DM_BINARY )) { -BCD_TO_BIN (sec); -BCD_TO_BIN (min); -BCD_TO_BIN (hour); -BCD_TO_BIN (day); -BCD_TO_BIN (mon); -BCD_TO_BIN (year); -BCD_TO_BIN (wday); + sec =bcd2bin (sec); + min =bcd2bin (min); + hour =bcd2bin (hour); + day =bcd2bin (day); + mon =bcd2bin (mon); + year =bcd2bin (year); + wday =bcd2bin (wday); }if (!(ctrl &RTC_24H )) {
@@ -318,7 +319,7 @@ int atari_tt_set_clock_mmss (unsigned lo rtc_minutes =RTC_READ (RTC_MINUTES );if (!(save_control &RTC_DM_BINARY )) -BCD_TO_BIN (rtc_minutes); + rtc_minutes =bcd2bin (rtc_minutes);/* Since we're only adjusting minutes and seconds, don't interfere with hour overflow. This avoids messing with unknown time zones
@@ -329,8 +330,8 @@ int atari_tt_set_clock_mmss (unsigned lo {if (!(save_control &RTC_DM_BINARY )) { -BIN_TO_BCD (real_seconds); -BIN_TO_BCD (real_minutes); + real_seconds =bin2bcd (real_seconds); + real_minutes =bin2bcd (real_minutes); }RTC_WRITE (RTC_SECONDS , real_seconds);RTC_WRITE (RTC_MINUTES , real_minutes);
arch/m68k/bvme6000/config.c +1 -14
@@ -25,6 +25,7 @@#include <linux/genhd.h> #include <linux/rtc.h> #include <linux/interrupt.h> +#include <linux/bcd.h> #include <asm/bootinfo.h> #include <asm/system.h>
@@ -46,9 +47,6 @@ extern void bvme6000_reset (void);extern void bvme6000_waitbut (void );void bvme6000_set_vectors (void ); -static unsigned char bcd2bin (unsigned char b); -static unsigned char bin2bcd (unsigned char b); -/* Save tick handler routine pointer, will point to do_timer() in * kernel/sched.c, called via bvme6000_process_int() */
@@ -264,17 +262,6 @@ unsigned long bvme6000_gettimeoffset (voreturn v; } -static unsigned char bcd2bin (unsigned char b) -{ -return ((b>>4 )*10 + (b&15 )); -} - -static unsigned char bin2bcd (unsigned char b) -{ -return (((b/10 )*16 ) + (b%10 )); -} - -/* * Looks like op is non-zero for setting the clock, and zero for * reading the clock.
arch/m68k/bvme6000/rtc.c +15 -15
@@ -57,16 +57,16 @@ static int rtc_ioctl(struct inode *inode rtc->msr =0x40 ;memset (&wtime,0 ,sizeof (struct rtc_time ));do { - wtime.tm_sec =BCD2BIN (rtc->bcd_sec); - wtime.tm_min =BCD2BIN (rtc->bcd_min); - wtime.tm_hour =BCD2BIN (rtc->bcd_hr); - wtime.tm_mday =BCD2BIN (rtc->bcd_dom); - wtime.tm_mon =BCD2BIN (rtc->bcd_mth)-1 ; - wtime.tm_year =BCD2BIN (rtc->bcd_year); + wtime.tm_sec =bcd2bin (rtc->bcd_sec); + wtime.tm_min =bcd2bin (rtc->bcd_min); + wtime.tm_hour =bcd2bin (rtc->bcd_hr); + wtime.tm_mday =bcd2bin (rtc->bcd_dom); + wtime.tm_mon =bcd2bin (rtc->bcd_mth)-1 ; + wtime.tm_year =bcd2bin (rtc->bcd_year);if (wtime.tm_year <70 ) wtime.tm_year +=100 ; - wtime.tm_wday =BCD2BIN (rtc->bcd_dow)-1 ; - }while (wtime.tm_sec !=BCD2BIN (rtc->bcd_sec)); + wtime.tm_wday =bcd2bin (rtc->bcd_dow)-1 ; + }while (wtime.tm_sec !=bcd2bin (rtc->bcd_sec)); rtc->msr = msr;local_irq_restore (flags); return copy_to_user(argp, &wtime, sizeof wtime) ?
@@ -114,14 +114,14 @@ static int rtc_ioctl(struct inode *inode rtc->t0cr_rtmr = yrs%4 ; rtc->bcd_tenms =0 ; - rtc->bcd_sec =BIN2BCD (sec); - rtc->bcd_min =BIN2BCD (min); - rtc->bcd_hr =BIN2BCD (hrs); - rtc->bcd_dom =BIN2BCD (day); - rtc->bcd_mth =BIN2BCD (mon); - rtc->bcd_year =BIN2BCD (yrs%100 ); + rtc->bcd_sec =bin2bcd (sec); + rtc->bcd_min =bin2bcd (min); + rtc->bcd_hr =bin2bcd (hrs); + rtc->bcd_dom =bin2bcd (day); + rtc->bcd_mth =bin2bcd (mon); + rtc->bcd_year =bin2bcd (yrs%100 );if (rtc_tm.tm_wday >=0 ) - rtc->bcd_dow =BIN2BCD (rtc_tm.tm_wday+1 ); + rtc->bcd_dow =bin2bcd (rtc_tm.tm_wday+1 ); rtc->t0cr_rtmr = yrs%4 |0x08 ; rtc->msr = msr;
arch/m68k/mvme16x/rtc.c +13 -13
@@ -52,15 +52,15 @@ static int rtc_ioctl(struct inode *inode/* Ensure clock and real-time-mode-register are accessible */ rtc->ctrl =RTC_READ ;memset (&wtime,0 ,sizeof (struct rtc_time )); - wtime.tm_sec =BCD2BIN (rtc->bcd_sec); - wtime.tm_min =BCD2BIN (rtc->bcd_min); - wtime.tm_hour =BCD2BIN (rtc->bcd_hr); - wtime.tm_mday =BCD2BIN (rtc->bcd_dom); - wtime.tm_mon =BCD2BIN (rtc->bcd_mth)-1 ; - wtime.tm_year =BCD2BIN (rtc->bcd_year); + wtime.tm_sec =bcd2bin (rtc->bcd_sec); + wtime.tm_min =bcd2bin (rtc->bcd_min); + wtime.tm_hour =bcd2bin (rtc->bcd_hr); + wtime.tm_mday =bcd2bin (rtc->bcd_dom); + wtime.tm_mon =bcd2bin (rtc->bcd_mth)-1 ; + wtime.tm_year =bcd2bin (rtc->bcd_year);if (wtime.tm_year <70 ) wtime.tm_year +=100 ; - wtime.tm_wday =BCD2BIN (rtc->bcd_dow)-1 ; + wtime.tm_wday =bcd2bin (rtc->bcd_dow)-1 ; rtc->ctrl =0 ;local_irq_restore (flags); return copy_to_user(argp, &wtime, sizeof wtime) ?
@@ -104,12 +104,12 @@ static int rtc_ioctl(struct inode *inodelocal_irq_save (flags); rtc->ctrl =RTC_WRITE ; - rtc->bcd_sec =BIN2BCD (sec); - rtc->bcd_min =BIN2BCD (min); - rtc->bcd_hr =BIN2BCD (hrs); - rtc->bcd_dom =BIN2BCD (day); - rtc->bcd_mth =BIN2BCD (mon); - rtc->bcd_year =BIN2BCD (yrs%100 ); + rtc->bcd_sec =bin2bcd (sec); + rtc->bcd_min =bin2bcd (min); + rtc->bcd_hr =bin2bcd (hrs); + rtc->bcd_dom =bin2bcd (day); + rtc->bcd_mth =bin2bcd (mon); + rtc->bcd_year =bin2bcd (yrs%100 ); rtc->ctrl =0 ;local_irq_restore (flags);
arch/m68k/q40/config.c +1 -11
@@ -23,6 +23,7 @@#include <linux/serial_reg.h> #include <linux/rtc.h> #include <linux/vt_kern.h> +#include <linux/bcd.h> #include <asm/io.h> #include <asm/rtc.h>
@@ -216,17 +217,6 @@ int q40_parse_bootinfo(const struct bi_r } -static inline unsigned char bcd2bin (unsigned char b) -{ -return (b >>4 ) *10 + (b &15 ); -} - -static inline unsigned char bin2bcd (unsigned char b) -{ -return (b /10 ) *16 + (b %10 ); -} - -static unsigned long q40_gettimeoffset (void ) {return 5000 * (ql_ticks !=0 );
arch/m68k/sun3x/time.c +14 -14
@@ -47,23 +47,23 @@ int sun3x_hwclk(int set, struct rtc_timeif (set) { h->csr |=C_WRITE ; - h->sec =BIN2BCD (t->tm_sec); - h->min =BIN2BCD (t->tm_min); - h->hour =BIN2BCD (t->tm_hour); - h->wday =BIN2BCD (t->tm_wday); - h->mday =BIN2BCD (t->tm_mday); - h->month =BIN2BCD (t->tm_mon); - h->year =BIN2BCD (t->tm_year); + h->sec =bin2bcd (t->tm_sec); + h->min =bin2bcd (t->tm_min); + h->hour =bin2bcd (t->tm_hour); + h->wday =bin2bcd (t->tm_wday); + h->mday =bin2bcd (t->tm_mday); + h->month =bin2bcd (t->tm_mon); + h->year =bin2bcd (t->tm_year); h->csr &= ~C_WRITE ; }else { h->csr |=C_READ ; - t->tm_sec =BCD2BIN (h->sec); - t->tm_min =BCD2BIN (h->min); - t->tm_hour =BCD2BIN (h->hour); - t->tm_wday =BCD2BIN (h->wday); - t->tm_mday =BCD2BIN (h->mday); - t->tm_mon =BCD2BIN (h->month); - t->tm_year =BCD2BIN (h->year); + t->tm_sec =bcd2bin (h->sec); + t->tm_min =bcd2bin (h->min); + t->tm_hour =bcd2bin (h->hour); + t->tm_wday =bcd2bin (h->wday); + t->tm_mday =bcd2bin (h->mday); + t->tm_mon =bcd2bin (h->month); + t->tm_year =bcd2bin (h->year); h->csr &= ~C_READ ; }
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 2/18 m68k: Use new printk() extension %pS to print symbols
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
This changes the oops and backtrace code to use the new `%pS' printk() extension to print out symbols rather than manually calling print_symbol.
--- arch/m68k/kernel/traps.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
arch/m68k/kernel/traps.c +3 -6
@@ -883,8 +883,7 @@ void show_trace(unsigned long *stack)if (i %5 ==0 )printk ("\n " );#endif -printk (" [<%08lx>]" , addr); -print_symbol (" %s\n" , addr); +printk (" [<%08lx>] %pS\n" , addr, (void *)addr); i++; } }
@@ -900,10 +899,8 @@ void show_registers(struct pt_regs *regsint i;print_modules (); -printk ("PC: [<%08lx>]" ,regs->pc); -print_symbol (" %s" , regs->pc); -printk ("\nSR: %04x SP: %p a2: %08lx\n" , - regs->sr, regs, regs->a2); +printk ("PC: [<%08lx>] %pS\n" , regs->pc, (void *)regs->pc); +printk ("SR: %04x SP: %p a2: %08lx\n" , regs->sr, regs, regs->a2);printk ("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n" , regs->d0, regs->d1, regs->d2, regs->d3); printk("d4: %08lx d5: %08lx a0: %08lx a1: %08lx\n",
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 3/18 m68k: Put .bss at the end of the data section
In reply to Geert UytterhoevenFrom: Roman Zippel <[email protected]>
Put .bss at the end of the data section
--- arch/m68k/kernel/vmlinux-std.lds | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
arch/m68k/kernel/vmlinux-std.lds +4 -4
@@ -34,10 +34,10 @@ SECTIONS CONSTRUCTORS } - .bss : { *(.bss) } /* BSS */ - . = ALIGN(16); - .data.cacheline_aligned : { *(.data.cacheline_aligned) } :data + .data.cacheline_aligned : { *(.data.cacheline_aligned) } + + .bss : { *(.bss) } /* BSS */ _edata = .; /* End of data section */
@@ -48,7 +48,7 @@ SECTIONS _sinittext = .; INIT_TEXT _einittext = .; - } + } :data .init.data : { INIT_DATA } . = ALIGN(16); __setup_start = .;
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 4/18 m68k: Add NOTES to init data so its discarded at boot
In reply to Geert UytterhoevenFrom: Roman Zippel <[email protected]>
Add .note.gnu.build-id to init data so it's discarded at boot.
[Andreas Schwab] Use NOTES macro
--- arch/m68k/kernel/vmlinux-std.lds | 1 + 1 file changed, 1 insertion(+)
arch/m68k/kernel/vmlinux-std.lds +1 -0
@@ -74,6 +74,7 @@ SECTIONS .init.ramfs : { *(.init.ramfs) } __initramfs_end = .; #endif + NOTES . = ALIGN(8192); __init_end = .;
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 5/18 m68k: Reverse platform MMU logic so Sun 3 is last
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
Currently Sun 3 support is the first platform option, as the Sun 3 MMU is incompatible with standard Motorola MMUs. However, this means that `allmodconfig' enables support for Sun 3, and thus disables support for all other platforms.
Reverse the logic and move Sun 3 last, so `allmodconfig' enables all platforms except for Sun 3, increasing compile-coverage.
--- arch/m68k/Kconfig | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-)
arch/m68k/Kconfig +22 -21
@@ -105,21 +105,9 @@ config PCMCIA To compile this driver as modules, choose M here: the modules will be called pcmcia_core and ds. -config SUN3 - bool "Sun3 support" - select M68020 - select MMU_SUN3 if MMU - help - This option enables support for the Sun 3 series of workstations - (3/50, 3/60, 3/1xx, 3/2xx systems). Enabling this option requires - that all other hardware types must be disabled, as Sun 3 kernels - are incompatible with all other m68k targets (including Sun 3x!). - - If you don't want to compile a kernel exclusively for a Sun 3, say N. - config AMIGA bool "Amiga support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help This option enables support for the Amiga series of computers. If you plan to use this kernel on an Amiga, say Y here and browse the
@@ -127,7 +115,7 @@ config AMIGA config ATARI bool "Atari support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help This option enables support for the 68000-based Atari series of computers (including the TT, Falcon and Medusa). If you plan to use
@@ -153,7 +141,7 @@ config PCI config MAC bool "Macintosh support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help This option enables support for the Apple Macintosh series of computers (yes, there is experimental support now, at least for part
@@ -174,14 +162,14 @@ config M68K_L2_CACHE config APOLLO bool "Apollo support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help Say Y here if you want to run Linux on an MC680x0-based Apollo Domain workstation such as the DN3500. config VME bool "VME (Motorola and BVM) support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help Say Y here if you want to build a kernel for a 680x0 based VME board. Boards currently supported include Motorola boards MVME147,
@@ -218,7 +206,7 @@ config BVME6000 config HP300 bool "HP9000/300 and HP9000/400 support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help This option enables support for the HP9000/300 and HP9000/400 series of workstations. Support for these machines is still somewhat
@@ -237,7 +225,7 @@ config DIO config SUN3X bool "Sun3x support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU select M68030 help This option enables support for the Sun 3x series of workstations.
@@ -250,7 +238,7 @@ config SUN3X config Q40 bool "Q40/Q60 support" - depends on !MMU_SUN3 + select MMU_MOTOROLA if MMU help The Q40 is a Motorola 68040-based successor to the Sinclair QL manufactured in Germany. There is an official Q40 home page at
@@ -258,6 +246,19 @@ config Q40 Q60. Select your CPU below. For 68LC060 don't forget to enable FPU emulation. +config SUN3 + bool "Sun3 support" + depends on !MMU_MOTOROLA + select MMU_SUN3 if MMU + select M68020 + help + This option enables support for the Sun 3 series of workstations + (3/50, 3/60, 3/1xx, 3/2xx systems). Enabling this option requires + that all other hardware types must be disabled, as Sun 3 kernels + are incompatible with all other m68k targets (including Sun 3x!). + + If you don't want to compile a kernel exclusively for a Sun 3, say N. + comment "Processor type" config M68020
@@ -295,10 +296,10 @@ config M68060 config MMU_MOTOROLA bool depends on MMU && !MMU_SUN3 - default y config MMU_SUN3 bool + depends on MMU && !MMU_MOTOROLA config M68KFPU_EMU bool "Math emulation support (EXPERIMENTAL)"
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 6/18 m68k: Disable Amiga serial console support if modular
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
If CONFIG_AMIGA_BUILTIN_SERIAL=m, I get the following warnings:
| drivers/char/amiserial.c: At top level: | drivers/char/amiserial.c:2138: warning: data definition has no type or storage class | drivers/char/amiserial.c:2138: warning: type defaults to 'int' in declaration of 'console_initcall' | drivers/char/amiserial.c:2138: warning: parameter names (without types) in function declaration | drivers/char/amiserial.c:2134: warning: 'amiserial_console_init' defined but not used
Apparently console_initcall() is not defined in the modular case.
Disable serial console support if the driver is modular.
---
Any better alternative fix?
drivers/char/amiserial.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/char/amiserial.c +4 -2
@@ -2071,12 +2071,13 @@ module_init(rs_init) module_exit(rs_exit) +#if defined(CONFIG_SERIAL_CONSOLE ) && !defined(MODULE ) +/* * ------------------------------------------------------------ * Serial console driver * ------------------------------------------------------------ */ -#ifdef CONFIG_SERIAL_CONSOLE static void amiga_serial_putc (char c) {
@@ -2130,6 +2131,7 @@ static int __init amiserial_console_init return 0; }console_initcall (amiserial_console_init); -#endif + +#endif /* CONFIG_SERIAL_CONSOLE && !MODULE */ MODULE_LICENSE ("GPL" );
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsRe: [patch 06/18] m68k: Disable Amiga serial console support if modular
Quoted 1 line · Geert Uytterhoeven
Apparently
console_initcall()is not defined in the modular case.
Yes, see include/linux/init.h:
#ifndef MODULE
[...]
#define console_initcall(fn) \
static initcall_t __initcall_##fn \
__used __section(.con_initcall.init) = fn
[...]
Quoted 1 line
Any better alternative fix?
Well, (a number of) other serial consoles cannot be selected if the corresponding serial driver is modular. Try:
grep -B 2 -E "depends on .*=y" drivers/serial/Kconfig | \
grep -A 2 -E "^config .*CONSOLE"
For instance:
config SERIAL_8250_CONSOLE
bool "Console on 8250/16550 and compatible serial port" depends on SERIAL_8250=y
Maybe this config entry (in arch/m68k/Kconfig) could be cleaned up (or split into multiple entries):
config SERIAL_CONSOLE
bool "Support for serial port console"
depends on (AMIGA || ATARI || MAC || SUN3 || SUN3X || VME ||
APOLLO) && (ATARI_MFPSER=y || ATARI_MIDI=y || MAC_SCC=y || AMIGA_BUILTIN_SERIAL=y || GVPIOEXT=y || MULTIFACE_III_TTY=y || SERIAL=y || MVME147_SCC || SERIAL167 || MVME162_SCC || BVME6000_SCC || DN_SERIAL) [...]
That "depends on" line seems likely to lead to problems like the one you ran into. But your patch (which I didn't test) is probably simpler.
Paul Bolle
Geert Uytterhoeven
maintainerRe: [patch 06/18] m68k: Disable Amiga serial console support if modular
Quoted 18 lines · Paul Bolle
Quoted 1 line · Geert Uytterhoeven
Apparently
console_initcall()is not defined in the modular case.Yes, see
include/linux/init.h:
#ifndef MODULE
[...]
#defineconsole_initcall(fn)\
staticinitcall_t__initcall_##fn \
__used__section(.con_initcall.init)= fn
[...]Quoted 1 line
Any better alternative fix?
Well, (a number of) other serial consoles cannot be selected if the corresponding serial driver is modular. Try:
grep -B 2 -E "depends on .*=y"drivers/serial/Kconfig| \
grep -A 2 -E "^config .*CONSOLE"
Quoted 4 lines
For instance:
configSERIAL_8250_CONSOLE
bool "Console on 8250/16550 and compatible serial port" depends on SERIAL_8250=y
Yes, I saw those.
Quoted 10 lines
Maybe this config entry (in
arch/m68k/Kconfig) could be cleaned up (or split into multiple entries):
configSERIAL_CONSOLE
bool "Support for serial port console"
depends on (AMIGA || ATARI || MAC || SUN3 || SUN3X || VME ||
APOLLO) && (ATARI_MFPSER=y || ATARI_MIDI=y || MAC_SCC=y || AMIGA_BUILTIN_SERIAL=y || GVPIOEXT=y || MULTIFACE_III_TTY=y || SERIAL=y ||MVME147_SCC|| SERIAL167 ||MVME162_SCC||BVME6000_SCC||DN_SERIAL) [...]
Quoted 2 lines
That "depends on" line seems likely to lead to problems like the one you ran into. But your patch (which I didn't test) is probably simpler.
Adding all those extra config symbols seems like a bit overkill to me...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Re: [patch 06/18] m68k: Disable Amiga serial console support if modular
In reply to Geert UytterhoevenQuoted 2 lines · Geert Uytterhoeven
Apparently
console_initcall()is not defined in the modular case.
We can certainly fix that.
Does this make things work for you? If so, send it back with a sign-off (add you can add mine too - but I'm not going to add it until it's tested)
Linus
--- include/linux/init.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
include/linux/init.h +1 -0
@@ -273,6 +273,7 @@ void __init parse_early_param(void);#else /* MODULE */ /* Don't use these in modules, but some people do... */ +#define console_initcall (fn) module_init(fn)#define core_initcall (fn) module_init(fn)#define postcore_initcall (fn) module_init(fn)#define arch_initcall (fn) module_init(fn)
Geert Uytterhoeven
maintainerRe: [patch 06/18] m68k: Disable Amiga serial console support if modular
Hi Linus,
Quoted 18 lines · Linus Torvalds
Quoted 1 line · Geert Uytterhoeven
Apparently
console_initcall()is not defined in the modular case.We can certainly fix that.
Does this make things work for you? If so, send it back with a sign-off (add you can add mine too - but I'm not going to add it until it's tested)
Linus
--- include/linux/init.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)include/linux/init.h +0
-0
include/linux/init.h void __init parse_early_param(void); · line 279
Quoted 7 lines
include/linux/init.h +1
-0@@ -273,6 +273,7 @@ void __init parse_early_param(void);#else /* MODULE */ /* Don't use these in modules, but some people do... */ +#define console_initcall (fn) module_init(fn)#define core_initcall (fn) module_init(fn)#define postcore_initcall (fn) module_init(fn)#define arch_initcall (fn) module_init(fn)
That won't help amiserial.c, as there's already a module_init() in that file for the normal serial driver part.
But even if it would work, does it really make sense to have a modular serial console driver?
- If you have only one console driver, it would be registered and become your console when you load the module; but you wouldn't have had any console before it got loaded.
- If you have several console drivers, you need a `console=' parameter anyway to control which one is used.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Geert Uytterhoeven
maintainerPATCH 7/18 m68k: Modular Amiga keyboard needs key_maps
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
| ERROR: "key_maps" [drivers/input/keyboard/amikbd.ko] undefined!
Export key_maps in the Amiga core code, as its defined in an autogenerated file (drivers/char/defkeymap.c)
--- arch/m68k/amiga/config.c | 9 +++++++++ 1 file changed, 9 insertions(+)
arch/m68k/amiga/config.c +9 -0
@@ -24,6 +24,7 @@#include <linux/interrupt.h> #include <linux/zorro.h> #include <linux/module.h> +#include <linux/keyboard.h> #include <asm/bootinfo.h> #include <asm/setup.h>
@@ -984,3 +985,11 @@ static int amiga_get_hardware_list(charreturn len; } + +/* +* The Amiga keyboard driver needs key_maps, but we cannot export it in +* drivers/char/defkeymap.c, as it is autogenerated +*/ +#ifdef CONFIG_HW_CONSOLE +EXPORT_SYMBOL_GPL (key_maps); +#endif
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 8/18 m68k: Remove unused atari_kbd_translate()
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
If CONFIG_VT=n, I get:
| arch/m68k/atari/built-in.o: In function `atari_kbd_translate':
| arch/m68k/atari/atakeyb.c:640: undefined reference to `shift_state'
Just remove atari_kbd_translate(), as it's unused.
--- arch/m68k/atari/atakeyb.c | 12 ------------ 1 file changed, 12 deletions(-)
arch/m68k/atari/atakeyb.c +0 -12
@@ -635,15 +635,3 @@ int atari_keyb_init(void)return 0 ; }EXPORT_SYMBOL_GPL (atari_keyb_init); - -int atari_kbd_translate (unsigned char keycode,unsigned char *keycodep,char raw_mode) -{ -#ifdef CONFIG_MAGIC_SYSRQ -/* ALT+HELP pressed? */ -if ((keycode ==98 ) && ((shift_state &0xff ) ==8 )) - *keycodep =0xff ; - else -#endif - *keycodep = keycode; -return 1 ; -}
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 9/18 m68k: Define rtc_lock on Atari
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
The nvram and rtc-cmos drivers use the spinlock rtc_lock to protect against concurrent accesses to the CMOS memory. As m68k doesn't support SMP or preempt yet, the spinlock calls tend to get optimized away, but not for all configurations, causing in some rare cases:
| ERROR: "rtc_lock" [drivers/rtc/rtc-cmos.ko] undefined! | ERROR: "rtc_lock" [drivers/char/nvram.ko] undefined!
Add the spinlock to the Atari core code to avoid this.
--- arch/m68k/atari/time.c | 3 +++ 1 file changed, 3 insertions(+)
arch/m68k/atari/time.c +3 -0
@@ -20,6 +20,9 @@#include <asm/atariints.h> +DEFINE_SPINLOCK (rtc_lock); +EXPORT_SYMBOL_GPL (rtc_lock); +void __init atari_sched_init (irq_handler_t timer_routine) {
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 10/18 m68k: Add missing dma_sync_single_range_for_{cpu,device}()
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
| include/linux/ssb/ssb.h: In function 'ssb_dma_sync_single_range_for_cpu': | include/linux/ssb/ssb.h:517: error: implicit declaration of function 'dma_sync_single_range_for_cpu' | include/linux/ssb/ssb.h: In function 'ssb_dma_sync_single_range_for_device': | include/linux/ssb/ssb.h:538: error: implicit declaration of function 'dma_sync_single_range_for_device'
Add the missing dma_sync_single_range_for_{cpu,device}(), and remove the `inline' for the non-static function dma_sync_single_for_device().
--- arch/m68k/kernel/dma.c | 4 ++-- include/asm-m68k/dma-mapping.h | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-)
arch/m68k/kernel/dma.c +2 -2
@@ -66,8 +66,8 @@ void dma_free_coherent(struct device *de }EXPORT_SYMBOL (dma_free_coherent); -inline void dma_sync_single_for_device (struct device *dev,dma_addr_t handle,size_t size, -enum dma_data_direction dir) +void dma_sync_single_for_device (struct device *dev,dma_addr_t handle, +size_t size,enum dma_data_direction dir) {switch (dir) {case DMA_TO_DEVICE :
include/asm-m68k/dma-mapping.h +16 -0
@@ -74,6 +74,14 @@ extern void dma_sync_single_for_device(sextern void dma_sync_sg_for_device (struct device *,struct scatterlist *,int ,enum dma_data_direction ); +static inline void dma_sync_single_range_for_device (struct device *dev, +dma_addr_t dma_handle,unsigned long offset,size_t size, +enum dma_data_direction direction) +{ +/* just sync everything for now */ +dma_sync_single_for_device (dev, dma_handle, offset + size, direction); +} +static inline void dma_sync_single_for_cpu (struct device *dev,dma_addr_t handle,size_t size,enum dma_data_direction dir) {
@@ -84,6 +92,14 @@ static inline void dma_sync_sg_for_cpu(s { } +static inline void dma_sync_single_range_for_cpu (struct device *dev, +dma_addr_t dma_handle,unsigned long offset,size_t size, +enum dma_data_direction direction) +{ +/* just sync everything for now */ +dma_sync_single_for_cpu (dev, dma_handle, offset + size, direction); +} +static inline int dma_mapping_error (struct device *dev,dma_addr_t handle) {return 0 ;
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 11/18 m68k: <asm/pci.h> needs <asm-generic/pci-dma-compat.h>
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
Several multi-bus subsystems:
| include/linux/ssb/ssb.h: In function 'ssb_dma_mapping_error': | include/linux/ssb/ssb.h:430: error: implicit declaration of function 'pci_dma_mapping_error' | include/linux/ssb/ssb.h: In function 'ssb_dma_map_single': | include/linux/ssb/ssb.h:444: error: implicit declaration of function 'pci_map_single' | include/linux/ssb/ssb.h: In function 'ssb_dma_unmap_single': | include/linux/ssb/ssb.h:458: error: implicit declaration of function 'pci_unmap_single' | include/linux/ssb/ssb.h: In function 'ssb_dma_sync_single_for_cpu': | include/linux/ssb/ssb.h:475: error: implicit declaration of function 'pci_dma_sync_single_for_cpu' | include/linux/ssb/ssb.h: In function 'ssb_dma_sync_single_for_device': | include/linux/ssb/ssb.h:493: error: implicit declaration of function 'pci_dma_sync_single_for_device'
or legacy drivers:
| drivers/net/hp100.c: In function 'pdl_map_data': | drivers/net/hp100.c:291: error: implicit declaration of function 'pci_map_single' | drivers/net/hp100.c: In function 'hp100_probe1': | drivers/net/hp100.c:707: error: implicit declaration of function 'pci_alloc_consistent' | drivers/net/hp100.c:782: error: implicit declaration of function 'pci_free_consistent' | drivers/net/hp100.c: In function 'hp100_clean_txring': | drivers/net/hp100.c:1614: error: implicit declaration of function 'pci_unmap_single'
and
| drivers/scsi/aic7xxx_old.c: In function 'aic7xxx_allocate_scb': | drivers/scsi/aic7xxx_old.c:2573: error: implicit declaration of function 'pci_alloc_consistent' | drivers/scsi/aic7xxx_old.c: In function 'aic7xxx_done': | drivers/scsi/aic7xxx_old.c:2697: error: implicit declaration of function 'pci_unmap_single' | drivers/scsi/aic7xxx_old.c: In function 'aic7xxx_handle_seqint': | drivers/scsi/aic7xxx_old.c:4275: error: implicit declaration of function 'pci_map_single' | drivers/scsi/aic7xxx_old.c: In function 'aic7xxx_free': | drivers/scsi/aic7xxx_old.c:8460: error: implicit declaration of function 'pci_free_consistent'
rely on PCI DMA operations to be always available.
Add #include <asm-generic/pci-dma-compat.h> to <asm/pci.h> to make them happy.
--- include/asm-m68k/pci.h | 1 + 1 file changed, 1 insertion(+)
include/asm-m68k/pci.h +1 -0
@@ -8,6 +8,7 @@*/ #include <asm/scatterlist.h> +#include <asm-generic/pci-dma-compat.h> struct pci_ops ;
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 12/18 HP input: kill warnings due to suseconds_t differences
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
Kill compiler warnings related to printf() formats in the input drivers for various HP9000 machines, which are shared between PA-RISC (suseconds_t is int) and m68k (suseconds_t is long). As both are 32-bit, it's safe to cast to int.
--- drivers/input/misc/hp_sdc_rtc.c | 10 +++++----- drivers/input/serio/hp_sdc.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-)
drivers/input/misc/hp_sdc_rtc.c +5 -5
@@ -458,35 +458,35 @@ static int hp_sdc_rtc_proc_output (char p +=sprintf (p,"i8042 rtc\t: READ FAILED!\n" ); }else { p +=sprintf (p,"i8042 rtc\t: %ld.%02d seconds\n" , - tv.tv_sec, tv.tv_usec/1000 ); + tv.tv_sec, (int )tv.tv_usec/1000 ); }if (hp_sdc_rtc_read_fhs (&tv)) { p +=sprintf (p,"handshake\t: READ FAILED!\n" ); }else { p +=sprintf (p,"handshake\t: %ld.%02d seconds\n" , - tv.tv_sec, tv.tv_usec/1000 ); + tv.tv_sec, (int )tv.tv_usec/1000 ); }if (hp_sdc_rtc_read_mt (&tv)) { p +=sprintf (p,"alarm\t\t: READ FAILED!\n" ); }else { p +=sprintf (p,"alarm\t\t: %ld.%02d seconds\n" , - tv.tv_sec, tv.tv_usec/1000 ); + tv.tv_sec, (int )tv.tv_usec/1000 ); }if (hp_sdc_rtc_read_dt (&tv)) { p +=sprintf (p,"delay\t\t: READ FAILED!\n" ); }else { p +=sprintf (p,"delay\t\t: %ld.%02d seconds\n" , - tv.tv_sec, tv.tv_usec/1000 ); + tv.tv_sec, (int )tv.tv_usec/1000 ); }if (hp_sdc_rtc_read_ct (&tv)) { p +=sprintf (p,"periodic\t: READ FAILED!\n" ); }else { p +=sprintf (p,"periodic\t: %ld.%02d seconds\n" , - tv.tv_sec, tv.tv_usec/1000 ); + tv.tv_sec, (int )tv.tv_usec/1000 ); } p += sprintf(p,
drivers/input/serio/hp_sdc.c +1 -1
@@ -323,7 +323,7 @@ static void hp_sdc_tasklet(unsigned long* it back to the application. and be less verbose. */ printk(KERN_WARNING PREFIX "read timeout (%ius)!\n", - tv.tv_usec - hp_sdc.rtv.tv_usec); + (int)(tv.tv_usec - hp_sdc.rtv.tv_usec)); curr->idx += hp_sdc.rqty; hp_sdc.rqty =0 ; tmp = curr->seq[curr->actidx];
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 13/18 m68k: Remove the broken Hades support
In reply to Geert UytterhoevenFrom: Adrian Bunk <[email protected]>
This patch removes the Hades support that was marked as BROKEN 5 years ago.
---
arch/m68k/Kconfig | 13 - arch/m68k/atari/Makefile | 3 arch/m68k/atari/ataints.c | 6 arch/m68k/atari/config.c | 37 +-- arch/m68k/atari/hades-pci.c | 440 -------------------------------------- arch/m68k/kernel/bios32.c | 6 arch/m68k/kernel/process.c | 2 drivers/block/ataflop.c | 4 drivers/scsi/Kconfig | 8 drivers/scsi/atari_dma_emul.c | 468 ----------------------------------------- drivers/scsi/atari_scsi.c | 27 -- include/asm-m68k/atarihw.h | 1 include/asm-m68k/entry.h | 2 include/asm-m68k/virtconvert.h | 6 14 files changed, 23 insertions(+), 1000 deletions(-)
d9b251e93344e93aace1d7dadc235b4a4aa8c3b2
arch/m68k/Kconfig +0 -13
@@ -122,22 +122,9 @@ config ATARI this kernel on an Atari, say Y here and browse the material available in <file:Documentation/m68k>; otherwise say N. -config HADES - bool "Hades support" - depends on ATARI && BROKEN - help - This option enables support for the Hades Atari clone. If you plan - to use this kernel on a Hades, say Y here; otherwise say N. - config PCI bool - depends on HADES - default y help - Find out whether you have a PCI motherboard. PCI is the name of a - bus system, i.e. the way the CPU talks to the other stuff inside - your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or - VESA. If you have PCI, say Y, otherwise N. config MAC bool "Macintosh support"
arch/m68k/atari/Makefile +0 -3
@@ -5,7 +5,4 @@ obj-y := config.o time.o debug.o ataints.o stdma.o \ atasound.o stram.o -ifeq ($(CONFIG_PCI),y) -obj-$(CONFIG_HADES) += hades-pci.o -endif obj-$(CONFIG_ATARI_KBD_CORE) += atakeyb.o
arch/m68k/atari/ataints.c +2 -4
@@ -407,10 +407,8 @@ void __init atari_init_IRQ(void)* gets overruns) */ -if (!MACH_IS_HADES ) { - vectors[VEC_INT2 ] = falcon_hblhandler; - vectors[VEC_INT4 ] = falcon_hblhandler; - } + vectors[VEC_INT2 ] = falcon_hblhandler; + vectors[VEC_INT4 ] = falcon_hblhandler; }if (ATARIHW_PRESENT (PCM_8BIT ) &&ATARIHW_PRESENT (MICROWIRE )) {
arch/m68k/atari/config.c +12 -25
@@ -231,7 +231,7 @@ void __init config_atari(void)*/ printk ("Atari hardware found: " ); -if (MACH_IS_MEDUSA ||MACH_IS_HADES ) { +if (MACH_IS_MEDUSA ) {/* There's no Atari video hardware on the Medusa, but all the * addresses below generate a DTACK so no bus error occurs! */ }else if (hwreg_present (f030_xreg)) {
@@ -269,10 +269,6 @@ void __init config_atari(void)ATARIHW_SET (SCSI_DMA );printk ("TT_SCSI_DMA " ); } -if (!MACH_IS_HADES &&hwreg_present (&st_dma.dma_hi)) { -ATARIHW_SET (STND_DMA ); -printk ("STND_DMA " ); - }/* * The ST-DMA address registers aren't readable * on all Medusas, so the test below may fail
@@ -294,12 +290,11 @@ void __init config_atari(void)ATARIHW_SET (YM_2149 );printk ("YM2149 " ); } -if (!MACH_IS_MEDUSA && !MACH_IS_HADES && -hwreg_present (&tt_dmasnd.ctrl)) { +if (!MACH_IS_MEDUSA &&hwreg_present (&tt_dmasnd.ctrl)) {ATARIHW_SET (PCM_8BIT );printk ("PCM " ); } -if (!MACH_IS_HADES &&hwreg_present (&falcon_codec.unused5)) { +if (hwreg_present (&falcon_codec.unused5)) {ATARIHW_SET (CODEC );printk ("CODEC " ); }
@@ -313,7 +308,7 @@ void __init config_atari(void) (tt_scc_dma.dma_ctrl =0x01 , (tt_scc_dma.dma_ctrl &1 ) ==1 ) && (tt_scc_dma.dma_ctrl = 0x00, (tt_scc_dma.dma_ctrl & 1) == 0)#else - !MACH_IS_MEDUSA && !MACH_IS_HADES + !MACH_IS_MEDUSA #endif ) {ATARIHW_SET (SCC_DMA );
@@ -327,10 +322,7 @@ void __init config_atari(void)ATARIHW_SET (ST_ESCC );printk ("ST_ESCC " ); } -if (MACH_IS_HADES ) { -ATARIHW_SET (VME ); -printk ("VME " ); - }else if (hwreg_present (&tt_scu.sys_mask)) { +if (hwreg_present (&tt_scu.sys_mask)) {ATARIHW_SET (SCU );/* Assume a VME bus if there's a SCU */ ATARIHW_SET (VME );
@@ -340,7 +332,7 @@ void __init config_atari(void)ATARIHW_SET (ANALOG_JOY );printk ("ANALOG_JOY " ); } -if (!MACH_IS_HADES &&hwreg_present (blitter.halftone)) { +if (hwreg_present (blitter.halftone)) {ATARIHW_SET (BLITTER );printk ("BLITTER " ); }
@@ -349,8 +341,7 @@ void __init config_atari(void)printk ("IDE " ); }#if 1 /* This maybe wrong */ - if (!MACH_IS_MEDUSA && !MACH_IS_HADES && - hwreg_present(&tt_microwire.data) && + if (!MACH_IS_MEDUSA && hwreg_present(&tt_microwire.data) && hwreg_present(&tt_microwire.mask) && (tt_microwire.mask = 0x7ff, udelay(1),
@@ -369,19 +360,18 @@ void __init config_atari(void) mach_hwclk = atari_tt_hwclk; mach_set_clock_mmss = atari_tt_set_clock_mmss; } -if (!MACH_IS_HADES &&hwreg_present (&mste_rtc.sec_ones)) { +if (hwreg_present (&mste_rtc.sec_ones)) {ATARIHW_SET (MSTE_CLK );printk ("MSTE_CLK " ); mach_hwclk = atari_mste_hwclk; mach_set_clock_mmss = atari_mste_set_clock_mmss; } -if (!MACH_IS_MEDUSA && !MACH_IS_HADES && -hwreg_present (&dma_wd.fdc_speed) && +if (!MACH_IS_MEDUSA &&hwreg_present (&dma_wd.fdc_speed) &&hwreg_write (&dma_wd.fdc_speed,0 )) {ATARIHW_SET (FDCSPEED );printk ("FDC_SPEED " ); } -if (!MACH_IS_HADES && !ATARIHW_PRESENT (ST_SCSI )) { +if (!ATARIHW_PRESENT (ST_SCSI )) {ATARIHW_SET (ACSI );printk ("ACSI " ); }
@@ -449,7 +439,7 @@ void __init config_atari(void)* 0xFFxxxxxx -> 0x00xxxxxx, so that the first 16MB is accessible * in the last 16MB of the address space. */ - tos_version = (MACH_IS_MEDUSA ||MACH_IS_HADES ) ? + tos_version = (MACH_IS_MEDUSA ) ?0xfff : *(unsigned short *)0xff000002 ; atari_rtc_year_offset = (tos_version <0x306 ) ?70 :68 ; }
@@ -511,8 +501,7 @@ static void atari_reset(void)* On the Medusa, phys. 0x4 may contain garbage because it's no * ROM. See above for explanation why we cannot use PTOV(4). */ - reset_addr =MACH_IS_HADES ?0x7fe00030 : -MACH_IS_MEDUSA ||MACH_IS_AB40 ?0xe00030 : + reset_addr =MACH_IS_MEDUSA ||MACH_IS_AB40 ?0xe00030 : *(unsigned long *)0xff000004 ;/* reset ACIA for switch off OverScan, if it's active */
@@ -606,8 +595,6 @@ static void atari_get_model(char *model)if (MACH_IS_MEDUSA )/* Medusa has TT _MCH cookie */ strcat (model,"Medusa" ); -else if (MACH_IS_HADES ) -strcat (model,"Hades" );else strcat (model,"TT" );break ;
arch/m68k/atari/hades-pci.c deleted +0 -440
440 lines not on this page · raw message
arch/m68k/kernel/bios32.c +4 -2
@@ -476,10 +476,12 @@ void __init pcibios_init(void)printk ("Linux/m68k PCI BIOS32 revision %x.%02x\n" ,MAJOR_REV ,MINOR_REV ); bus_info =NULL ; -#ifdef CONFIG_HADES + +/* Hades code was: if (MACH_IS_HADES) bus_info = init_hades_pci(); -#endif +*/ +if (bus_info !=NULL ) {printk ("PCI: Probing PCI hardware\n" );
arch/m68k/kernel/process.c +1 -1
@@ -78,7 +78,7 @@ unsigned long thread_saved_pc(struct tasstatic void default_idle (void ) { if (!need_resched()) -#if defined(MACH_ATARI_ONLY ) && !defined(CONFIG_HADES ) +#if defined(MACH_ATARI_ONLY )/* block out HSYNC on the atari (falcon) */ __asm__("stop #0x2200" : : :"cc" );#else
drivers/block/ataflop.c +0 -4
@@ -1882,10 +1882,6 @@ static int __init atari_floppy_init (voi/* Amiga, Mac, ... don't have Atari-compatible floppy :-) */ return -ENODEV ; -if (MACH_IS_HADES ) -/* Hades doesn't have Atari-compatible floppy */ -return -ENODEV ; -if (register_blkdev (FLOPPY_MAJOR ,"fd" ))return -EBUSY ;
drivers/scsi/Kconfig +0 -8
@@ -1670,14 +1670,6 @@ config ATARI_SCSI_RESET_BOOT boot process fractionally longer but may assist recovery from errors that leave the devices with SCSI operations partway completed. -config TT_DMA_EMUL - bool "Hades SCSI DMA emulator" - depends on ATARI_SCSI && HADES - help - This option enables code which emulates the TT SCSI DMA chip on the - Hades. This increases the SCSI transfer rates at least ten times - compared to PIO transfers. - config MAC_SCSI bool "Macintosh NCR5380 SCSI" depends on MAC && SCSI=y
drivers/scsi/atari_dma_emul.c deleted +0 -468
468 lines not on this page · raw message
drivers/scsi/atari_scsi.c +3 -24
@@ -249,10 +249,6 @@ static int setup_hostid = -1;module_param (setup_hostid, int,0 ); -#if defined(CONFIG_TT_DMA_EMUL ) -#include "atari_dma_emul.c" -#endif -#if defined(REAL_DMA )static int scsi_dma_is_ignored_buserr (unsigned char dma_stat)
@@ -695,21 +691,8 @@ int atari_scsi_detect(struct scsi_host_t#ifdef REAL_DMA tt_scsi_dma.dma_ctrl =0 ; atari_dma_residual =0 ; -#ifdef CONFIG_TT_DMA_EMUL -if (MACH_IS_HADES ) { -if (request_irq (IRQ_AUTO_2 , hades_dma_emulator, -IRQ_TYPE_PRIO ,"Hades DMA emulator" , - hades_dma_emulator)) { -printk (KERN_ERR "atari_scsi_detect: cannot allocate irq %d, aborting (MACH_IS_HADES)" ,IRQ_AUTO_2 ); -free_irq (IRQ_TT_MFP_SCSI , instance); -scsi_unregister (atari_scsi_host); -atari_stram_free (atari_dma_buffer); - atari_dma_buffer =0 ; -return 0 ; - } - } -#endif -if (MACH_IS_MEDUSA ||MACH_IS_HADES ) { + +if (MACH_IS_MEDUSA ) {/* While the read overruns (described by Drew Eckhardt in * NCR5380.c) never happened on TTs, they do in fact on the Medusa * (This was the cause why SCSI didn't work right for so long
@@ -1007,11 +990,7 @@ static unsigned long atari_dma_xfer_len( Scsi_Cmnd *cmd, int write_flag) {unsigned long possible_len, limit; -#ifndef CONFIG_TT_DMA_EMUL -if (MACH_IS_HADES ) -/* Hades has no SCSI DMA at all :-( Always force use of PIO */ -return 0 ; -#endif +if (IS_A_TT ())/* TT SCSI DMA can transfer arbitrary #bytes */ return wanted_len;
include/asm-m68k/atarihw.h +0 -1
@@ -39,7 +39,6 @@ extern int atari_dont_touch_floppy_selec#define MACH_IS_TT ((atari_mch_cookie >> 16) == ATARI_MCH_TT)#define MACH_IS_FALCON ((atari_mch_cookie >> 16) == ATARI_MCH_FALCON)#define MACH_IS_MEDUSA (atari_mch_type == ATARI_MACH_MEDUSA) -#define MACH_IS_HADES (atari_mch_type == ATARI_MACH_HADES)#define MACH_IS_AB40 (atari_mch_type == ATARI_MACH_AB40)/* values for atari_switches */
include/asm-m68k/entry.h +1 -1
@@ -31,7 +31,7 @@*/ /* the following macro is used when enabling interrupts */ -#if defined(MACH_ATARI_ONLY ) && !defined(CONFIG_HADES ) +#if defined(MACH_ATARI_ONLY )/* block out HSYNC on the atari */ #define ALLOWINT (~0x400)#define MAX_NOINT_IPL 3
include/asm-m68k/virtconvert.h +0 -6
@@ -40,15 +40,9 @@ static inline void *phys_to_virt(unsigne/* * IO bus memory addresses are 1:1 with the physical address, -* except on the PCI bus of the Hades. */ -#ifdef CONFIG_HADES -#define virt_to_bus (a) (virt_to_phys(a) + (MACH_IS_HADES ? 0x80000000 : 0)) -#define bus_to_virt (a) (phys_to_virt((a) - (MACH_IS_HADES ? 0x80000000 : 0))) -#else #define virt_to_bus virt_to_phys#define bus_to_virt phys_to_virt -#endif #endif #endif
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 14/18 m68k: remove the dead PCI code
In reply to Geert UytterhoevenFrom: Adrian Bunk <[email protected]>
This patch removes the no longer used m68k PCI code.
--- arch/m68k/Kconfig | 4 arch/m68k/kernel/Makefile | 1 arch/m68k/kernel/bios32.c | 516 ---------------------------------------------- include/asm-m68k/dma.h | 4 include/asm-m68k/io.h | 66 ----- include/asm-m68k/pci.h | 46 ---- 6 files changed, 7 insertions(+), 630 deletions(-)
arch/m68k/Kconfig +0 -4
@@ -122,10 +122,6 @@ config ATARI this kernel on an Atari, say Y here and browse the material available in <file:Documentation/m68k>; otherwise say N. -config PCI - bool - help - config MAC bool "Macintosh support" select MMU_MOTOROLA if MMU
arch/m68k/kernel/Makefile +0 -1
@@ -14,5 +14,4 @@ obj-y := entry.o process.o traps.o ints. devres-y = ../../../kernel/irq/devres.o -obj-$(CONFIG_PCI) += bios32.o obj-y$(CONFIG_MMU_SUN3) += dma.o # no, it's not a typo
arch/m68k/kernel/bios32.c deleted +0 -516
516 lines not on this page · raw message
include/asm-m68k/dma.h +0 -4
@@ -11,10 +11,6 @@extern int request_dma (unsigned int dmanr,const char * device_id);/* reserve a DMA channel */ extern void free_dma (unsigned int dmanr);/* release it again */ -#ifdef CONFIG_PCI -extern int isa_dma_bridge_buggy; -#else #define isa_dma_bridge_buggy (0) -#endif #endif /* _M68K_DMA_H */
include/asm-m68k/io.h +7 -59
98 lines not on this page · raw message
include/asm-m68k/pci.h +0 -46
54 lines not on this page · raw message
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 15/18 m68k: init_irq_proc depends on CONFIG_PROC_FS
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
If CONFIG_PROC_FS is not set, I get:
| arch/m68k/kernel/ints.c:433: error: redefinition of 'init_irq_proc'
| include/linux/interrupt.h:438: error: previous definition of 'init_irq_proc' was here
This was introduced by commit 6168a702ab0be181e5e57a0b2d0e7376f7a47f0b ("Declare init_irq_proc before we use it."), which replaced the #ifdef protection of the init_irq_proc() call by a static inline dummy if CONFIG_PROC_FS is not set.
Make init_irq_proc() depend on CONFIG_PROC_FS to fix this.
--- arch/m68k/kernel/ints.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
arch/m68k/kernel/ints.c +2 -1
@@ -429,8 +429,9 @@ int show_interrupts(struct seq_file *p,return 0 ; } +#ifdef CONFIG_PROC_FS void init_irq_proc (void ) {/* Insert /proc/irq driver here */ } - +#endif
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 16/18 m68k: Atari SCSI needs NVRAM
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
ERROR: "nvram_read_byte" [drivers/scsi/atari_scsi.ko] undefined!
ERROR: "nvram_check_checksum" [drivers/scsi/atari_scsi.ko] undefined!
--- drivers/scsi/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/scsi/Kconfig +1 -0
@@ -1640,6 +1640,7 @@ config ATARI_SCSI tristate "Atari native SCSI support" depends on ATARI && SCSI select SCSI_SPI_ATTRS + select NVRAM ---help--- If you have an Atari with built-in NCR5380 SCSI controller (TT, Falcon, ...) say Y to get it supported. Of course also, if you have
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsGeert Uytterhoeven
maintainerPATCH 17/18 net/rfkill/rfkill-input.c needs <linux/sched.h>
In reply to Geert UytterhoevenFrom: Geert Uytterhoeven <[email protected]>
For some m68k configs, I get:
| net/rfkill/rfkill-input.c: In function 'rfkill_start':
| net/rfkill/rfkill-input.c:208: error: dereferencing pointer to incomplete type
As the incomplete type is `struct task_struct', including <linux/sched.h> fixes it.
--- net/rfkill/rfkill-input.c | 1 + 1 file changed, 1 insertion(+)
net/rfkill/rfkill-input.c +1 -0
@@ -16,6 +16,7 @@#include <linux/workqueue.h> #include <linux/init.h> #include <linux/rfkill.h> +#include <linux/sched.h> #include "rfkill-input.h"
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus TorvaldsRe: [patch 17/18] net/rfkill/rfkill-input.c needs <linux/sched.h>
Quoted 9 lines · Geert Uytterhoeven
From: Geert Uytterhoeven <[email protected]>
For some m68k configs, I get:
|
net/rfkill/rfkill-input.c: In function 'rfkill_start':
|net/rfkill/rfkill-input.c:208: error: dereferencing pointer to incomplete typeAs the incomplete type is `struct
task_struct', including <linux/sched.h> fixes it.
Line 208 is this (in latest Linus mainline and also v2.6.27):
spin_unlock_irq(&handle->dev->event_lock);
So we need to include sched.h to everything that uses spin_unlock_irq? If only some variants of m68k need that, shouldn't it have been added on the header that defines spin_unlock_irq() on those arches, instead?
Or am I looking at a different version of rfkill-input.c than what you based that error message on?
Signature · 4 lines
"One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh
Re: [patch 17/18] net/rfkill/rfkill-input.c needs <linux/sched.h>
Quoted 4 lines · Henrique de Moraes Holschuh
Quoted 3 lines · Geert Uytterhoeven
|
net/rfkill/rfkill-input.c: In function 'rfkill_start':
|net/rfkill/rfkill-input.c:208: error: dereferencing pointer to incomplete type
Quoted 8 lines
Quoted 2 lines
As the incomplete type is `struct
task_struct', including <linux/sched.h> fixes it.Line 208 is this (in latest Linus mainline and also v2.6.27):
spin_unlock_irq(&handle->dev->event_lock);So we need to include
sched.hto everything that usesspin_unlock_irq? If
Never mind, I didn't check if the problem is with the argument to spin_unlock_irq(), but the question remains...
Quoted 5 lines
only some variants of m68k need that, shouldn't it have been added on the header that defines
spin_unlock_irq()on those arches, instead?Or am I looking at a different version of
rfkill-input.cthan what you based that error message on?
Signature · 4 lines
"One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh
Geert Uytterhoeven
maintainerRe: [patch 17/18] net/rfkill/rfkill-input.c needs <linux/sched.h>
In reply to Henrique de Moraes HolschuhQuoted 11 lines · Henrique de Moraes Holschuh
Quoted 9 lines · Geert Uytterhoeven
From: Geert Uytterhoeven <[email protected]>
For some m68k configs, I get:
|
net/rfkill/rfkill-input.c: In function 'rfkill_start':
|net/rfkill/rfkill-input.c:208: error: dereferencing pointer to incomplete typeAs the incomplete type is `struct
task_struct', including <linux/sched.h> fixes it.
Quoted 7 lines
Line 208 is this (in latest Linus mainline and also v2.6.27):
spin_unlock_irq(&handle->dev->event_lock);So we need to include
sched.hto everything that usesspin_unlock_irq? If only some variants of m68k need that, shouldn't it have been added on the header that definesspin_unlock_irq()on those arches, instead?
Unfortunately that's not possible, due to Include Hell(tm). Therefore, including <linux/sched.h> is the way this has been fixed in the past.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Re: [patch 17/18] net/rfkill/rfkill-input.c needs <linux/sched.h>
Quoted 3 lines · Geert Uytterhoeven
Unfortunately that's not possible, due to Include Hell(tm). Therefore, including <
linux/sched.h> is the way this has been fixed in the past.
I see. Well, when doing this I'd suggest adding a comment, otherwise the include could end up getting removed sooner or later without anyone asking linux-m68k first (I seriously douby anyone will do git blame to find out why an #include line exists before removing it).
Something like:
#include <sched.h> /* m68k needs task_struct for <whatever> */
Signature · 4 lines
"One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh
Geert Uytterhoeven
maintainerRe: [patch 17/18] net/rfkill/rfkill-input.c needs <linux/sched.h>
Quoted 5 lines · Henrique de Moraes Holschuh
Quoted 3 lines · Geert Uytterhoeven
Unfortunately that's not possible, due to Include Hell(tm). Therefore, including <
linux/sched.h> is the way this has been fixed in the past.
Quoted 7 lines
I see. Well, when doing this I'd suggest adding a comment, otherwise the include could end up getting removed sooner or later without anyone asking linux-m68k first (I seriously douby anyone will do git blame to find out why an #include line exists before removing it).
Something like:
#include <sched.h> /* m68k needstask_structfor <whatever> */
Probably we should start looking again into extracting struct task_struct into its own header file, cfr. what Roman Zippel did a long time ago...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Re: [patch 17/18] net/rfkill/rfkill-input.c needs <linux/sched.h>
In reply to Henrique de Moraes HolschuhQuoted 5 lines · Henrique de Moraes Holschuh
Quoted 3 lines · Geert Uytterhoeven
Unfortunately that's not possible, due to Include Hell(tm). Therefore, including <
linux/sched.h> is the way this has been fixed in the past.
Quoted 7 lines
I see. Well, when doing this I'd suggest adding a comment, otherwise the include could end up getting removed sooner or later without anyone asking linux-m68k first (I seriously douby anyone will do git blame to find out why an #include line exists before removing it).
Something like:
#include <sched.h> /* m68k needstask_structfor <whatever> */
Such comments in the kernel tend to be old ones you cannot trust.
And #include removals are not really a common case - sometimes someone cleans up something specific, but I don't think anyone will remove #include's of sched.h from random .c files (considering how much sched.h pulls in the fallout of such #include removals would be many build breakages) unless someone seriously reorganizes sched.h itself.
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedGeert Uytterhoeven
maintainerPATCH 18/18 arch/m68k/mm/kmap.c: introduce missing kfree
In reply to Geert UytterhoevenFrom: Julia Lawall <[email protected]>
Error handling code following a kmalloc should free the allocated data.
The semantic match that finds the problem is as follows:
(http://www.emn.fr/x-info/coccinelle/)
// <smpl>
@r exists@
local idexpression x;
statement S;
expression E;
identifier f,l;
position p1,p2;
expression *ptr != NULL;
@@
(
if ((x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...)) == NULL) S |
x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
..
if (x == NULL) S
)
<... when != x
when != if (...) { <+...x...+> }x->f = E
..>
(
return \(0\|<+...x...+>\|ptr\);
|
return@p2 ...;
)
@script:python@
p1 << r.p1;
p2 << r.p2;
@@
print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line) // </smpl>
--- arch/m68k/mm/kmap.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/m68k/mm/kmap.c +3 -1
@@ -66,8 +66,10 @@ static struct vm_struct *get_io_area(unsfor (p = &iolist; (tmp = *p) ; p = &tmp->next) {if (size + addr < (unsigned long )tmp->addr)break ; -if (addr >KMAP_END -size) +if (addr >KMAP_END -size) { +kfree (area);return NULL ; + } addr = tmp->size + (unsigned long )tmp->addr; } area->addr = (void *)addr;
Signature · 10 lines
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds