]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Sep 2013 17:45:29 +0000 (10:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Sep 2013 17:45:29 +0000 (10:45 -0700)
Pull m68k updates from Geert Uytterhoeven:
 "Summary:
   - Kill harmless warning messages when running a multi-platform kernel
     on Atari
   - Correct virt/phys mixups that didn't actually hurt due to identity
     mappings"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  m68k/atari: ARAnyM - Always use physical addresses in NatFeat calls
  m68k: Ignore disabled HSYNC interrupt on Atari for irqs_disabled()

arch/m68k/emu/natfeat.c
arch/m68k/emu/nfblock.c
arch/m68k/emu/nfcon.c
arch/m68k/emu/nfeth.c
arch/m68k/include/asm/irqflags.h

index fa277aecfb78f1256dae50e30b0d873afbb72949..121a6660ad4e5c40db157c25385507f4f51a674f 100644 (file)
 #include <asm/machdep.h>
 #include <asm/natfeat.h>
 
-extern long nf_get_id2(const char *feature_name);
+extern long nf_get_id_phys(unsigned long feature_name);
 
 asm("\n"
-"      .global nf_get_id2,nf_call\n"
-"nf_get_id2:\n"
+"      .global nf_get_id_phys,nf_call\n"
+"nf_get_id_phys:\n"
 "      .short  0x7300\n"
 "      rts\n"
 "nf_call:\n"
@@ -31,7 +31,7 @@ asm("\n"
 "1:    moveq.l #0,%d0\n"
 "      rts\n"
 "      .section __ex_table,\"a\"\n"
-"      .long   nf_get_id2,1b\n"
+"      .long   nf_get_id_phys,1b\n"
 "      .long   nf_call,1b\n"
 "      .previous");
 EXPORT_SYMBOL_GPL(nf_call);
@@ -46,7 +46,7 @@ long nf_get_id(const char *feature_name)
        if (n >= sizeof(name_copy))
                return 0;
 
-       return nf_get_id2(name_copy);
+       return nf_get_id_phys(virt_to_phys(name_copy));
 }
 EXPORT_SYMBOL_GPL(nf_get_id);
 
@@ -58,7 +58,7 @@ void nfprint(const char *fmt, ...)
 
        va_start(ap, fmt);
        n = vsnprintf(buf, 256, fmt, ap);
-       nf_call(nf_get_id("NF_STDERR"), buf);
+       nf_call(nf_get_id("NF_STDERR"), virt_to_phys(buf));
        va_end(ap);
 }
 
@@ -83,7 +83,7 @@ void nf_init(void)
        id = nf_get_id("NF_NAME");
        if (!id)
                return;
-       nf_call(id, buf, 256);
+       nf_call(id, virt_to_phys(buf), 256);
        buf[255] = 0;
 
        pr_info("NatFeats found (%s, %lu.%lu)\n", buf, version >> 16,
index e3011338ab40ece61712a293f3aeb8fef207c715..0721858fbd1ef6618b288bcbea33369995e35653 100644 (file)
@@ -41,8 +41,8 @@ static inline s32 nfhd_read_write(u32 major, u32 minor, u32 rwflag, u32 recno,
 static inline s32 nfhd_get_capacity(u32 major, u32 minor, u32 *blocks,
                                    u32 *blocksize)
 {
-       return nf_call(nfhd_id + NFHD_GET_CAPACITY, major, minor, blocks,
-                      blocksize);
+       return nf_call(nfhd_id + NFHD_GET_CAPACITY, major, minor,
+                      virt_to_phys(blocks), virt_to_phys(blocksize));
 }
 
 static LIST_HEAD(nfhd_list);
index 6685bf45c2c37d3d6056576d2b954e10c2c337d1..57e8c8fb5eba2be6a3bddfd5b28b437307c6ef94 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/slab.h>
 #include <linux/err.h>
 #include <linux/uaccess.h>
+#include <linux/io.h>
 
 #include <asm/natfeat.h>
 
@@ -25,17 +26,18 @@ static struct tty_driver *nfcon_tty_driver;
 static void nfputs(const char *str, unsigned int count)
 {
        char buf[68];
+       unsigned long phys = virt_to_phys(buf);
 
        buf[64] = 0;
        while (count > 64) {
                memcpy(buf, str, 64);
-               nf_call(stderr_id, buf);
+               nf_call(stderr_id, phys);
                str += 64;
                count -= 64;
        }
        memcpy(buf, str, count);
        buf[count] = 0;
-       nf_call(stderr_id, buf);
+       nf_call(stderr_id, phys);
 }
 
 static void nfcon_write(struct console *con, const char *str,
@@ -79,7 +81,7 @@ static int nfcon_tty_put_char(struct tty_struct *tty, unsigned char ch)
 {
        char temp[2] = { ch, 0 };
 
-       nf_call(stderr_id, temp);
+       nf_call(stderr_id, virt_to_phys(temp));
        return 1;
 }
 
index 695cd737a42e80687bcb834685c32b15bd3085ca..a0985fd088d1c8a0381dfe75420c1e2d25b8d88c 100644 (file)
@@ -195,7 +195,8 @@ static struct net_device * __init nfeth_probe(int unit)
        char mac[ETH_ALEN], host_ip[32], local_ip[32];
        int err;
 
-       if (!nf_call(nfEtherID + XIF_GET_MAC, unit, mac, ETH_ALEN))
+       if (!nf_call(nfEtherID + XIF_GET_MAC, unit, virt_to_phys(mac),
+                    ETH_ALEN))
                return NULL;
 
        dev = alloc_etherdev(sizeof(struct nfeth_private));
@@ -217,9 +218,9 @@ static struct net_device * __init nfeth_probe(int unit)
        }
 
        nf_call(nfEtherID + XIF_GET_IPHOST, unit,
-               host_ip, sizeof(host_ip));
+               virt_to_phys(host_ip), sizeof(host_ip));
        nf_call(nfEtherID + XIF_GET_IPATARI, unit,
-               local_ip, sizeof(local_ip));
+               virt_to_phys(local_ip), sizeof(local_ip));
 
        netdev_info(dev, KBUILD_MODNAME " addr:%s (%s) HWaddr:%pM\n", host_ip,
                    local_ip, mac);
index 7ef4115b8c4a59f0248df2273184ab5e2ed8f053..5053092b369fc3869e11f34a72e46ca8fee7132e 100644 (file)
@@ -67,6 +67,10 @@ static inline void arch_local_irq_restore(unsigned long flags)
 
 static inline bool arch_irqs_disabled_flags(unsigned long flags)
 {
+       if (MACH_IS_ATARI) {
+               /* Ignore HSYNC = ipl 2 on Atari */
+               return (flags & ~(ALLOWINT | 0x200)) != 0;
+       }
        return (flags & ~ALLOWINT) != 0;
 }