All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Schmitz <schmitzmic@gmail.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Finn Thain <fthain@fastmail.com.au>,
	John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
	Christoph Hellwig <hch@lst.de>,
	Joshua Thompson <funaho@jurai.org>,
	"David S. Miller" <davem@davemloft.net>,
	linux-m68k <linux-m68k@lists.linux-m68k.org>
Subject: Re: [PATCH] m68k/mac: Replace macide driver with generic platform driver
Date: Tue, 1 Jun 2021 19:55:25 +1200	[thread overview]
Message-ID: <dc393de9-b4ae-5c87-d7c7-b3dd55c514a5@gmail.com> (raw)
In-Reply-To: <e4635ac5-903a-a52e-51cf-b59295c76973@gmail.com>

Hi Geert,

Am 01.06.2021 um 15:32 schrieb Michael Schmitz:
>> That's supposed to work, else our multi_defconfig is broken.
>
> Took a while to get back to this, but I believe unless this
> configuration sets CONFIG_ISA && !CONFIG_ATARI_ROM_ISA, Q40 ISA support
> will indeed be broken, due to
>
> #define inb(port)       ((port) < 1024 ? isa_rom_inb(port) : in_8(port))
>
> using incorrect address translation on Q40 (either that for the Atari
> ROM port, or none)? Not entirely sure what I had been smoking when
> writing that ...
>
> Conversely, if that combination _is_ set, neither ROM port access nor
> IDE access on Atari will work (again due to incorrect address
> translation - indiscriminately applying the one required for the ROM
> port in that case, which is inappropriate for Atari IDE).
>
> I'm currently considering a fix that does conditional address
> translation in isa_itb() and its buddys, and replaces in_8() by
> isa_inb() in the definition above (and equivalent changes elsewhere).

Untested (and mangled formatting, sorry):

> diff --git a/arch/m68k/include/asm/io_mm.h b/arch/m68k/include/asm/io_mm.h
> index d41fa48..aaae12f 100644
> --- a/arch/m68k/include/asm/io_mm.h
> +++ b/arch/m68k/include/asm/io_mm.h
> @@ -135,7 +135,10 @@ static inline u8 __iomem *isa_itb(unsigned long addr)
>      case ISA_TYPE_AG: return (u8 __iomem *)AG_ISA_IO_B(addr);
>  #endif
>  #ifdef CONFIG_ATARI_ROM_ISA
> -    case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_IO_B(addr);
>  #endif
>  #ifdef CONFIG_ATARI_ROM_ISA
> -    case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_IO_B(addr);
> +    case ISA_TYPE_ENEC: if (addr < 1024)
> +                               return (u8 __iomem *)ENEC_ISA_IO_B(addr);
> +                       else
> +                               return (u8 __iomem *)(addr);
>  #endif
>      default: return NULL; /* avoid warnings, just in case */
>      }
> @@ -151,7 +154,10 @@ static inline u16 __iomem *isa_itw(unsigned long addr)
>      case ISA_TYPE_AG: return (u16 __iomem *)AG_ISA_IO_W(addr);
>  #endif
>  #ifdef CONFIG_ATARI_ROM_ISA
> -    case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_IO_W(addr);
> +    case ISA_TYPE_ENEC: if (addr < 1024)
> +                               return (u16 __iomem *)ENEC_ISA_IO_W(addr);
> +                       else
> +                               return (u16 __iomem *)(addr);
>  #endif
>      default: return NULL; /* avoid warnings, just in case */
>      }
> @@ -177,7 +183,10 @@ static inline u8 __iomem *isa_mtb(unsigned long addr)
>      case ISA_TYPE_AG: return (u8 __iomem *)addr;
>  #endif
>  #ifdef CONFIG_ATARI_ROM_ISA
> -    case ISA_TYPE_ENEC: return (u8 __iomem *)ENEC_ISA_MEM_B(addr);
> +    case ISA_TYPE_ENEC: if (addr < 1024)
> +                               return (u8 __iomem *)ENEC_ISA_MEM_B(addr);
> +                       else
> +                               return (u8 __iomem *)(addr);
>  #endif
>      default: return NULL; /* avoid warnings, just in case */
>      }
> @@ -193,7 +202,10 @@ static inline u16 __iomem *isa_mtw(unsigned long addr)
>      case ISA_TYPE_AG: return (u16 __iomem *)addr;
>  #endif
>  #ifdef CONFIG_ATARI_ROM_ISA
> -    case ISA_TYPE_ENEC: return (u16 __iomem *)ENEC_ISA_MEM_W(addr);
> +    case ISA_TYPE_ENEC: if (addr < 1024)
> +                               return (u16 __iomem *)ENEC_ISA_MEM_W(addr);
> +                       else
> +                               return (u16 __iomem *)(addr);
>  #endif
>      default: return NULL; /* avoid warnings, just in case */
>      }
> @@ -344,17 +356,17 @@ static inline void isa_delay(void)
>   * ROM port ISA and everything else regular ISA for IDE. read,write defined
>   * below.
>   */
> -#define inb(port)      ((port) < 1024 ? isa_rom_inb(port) : in_8(port))
> -#define inb_p(port)    ((port) < 1024 ? isa_rom_inb_p(port) : in_8(port))
> -#define inw(port)      ((port) < 1024 ? isa_rom_inw(port) : in_le16(port))
> -#define inw_p(port)    ((port) < 1024 ? isa_rom_inw_p(port) : in_le16(port))
> +#define inb(port)      ((port) < 1024 ? isa_rom_inb(port) : isa_inb(port))
> +#define inb_p(port)    ((port) < 1024 ? isa_rom_inb_p(port) : isa_inb_p(port))
> +#define inw(port)      ((port) < 1024 ? isa_rom_inw(port) : isa_inw(port))
> +#define inw_p(port)    ((port) < 1024 ? isa_rom_inw_p(port) : isa_inw_p(port))
>  #define inl            isa_inl
>  #define inl_p          isa_inl_p
>
> -#define outb(val, port)        ((port) < 1024 ? isa_rom_outb((val), (port)) : out_8((port), (val)))
> -#define outb_p(val, port) ((port) < 1024 ? isa_rom_outb_p((val), (port)) : out_8((port), (val)))
> -#define outw(val, port)        ((port) < 1024 ? isa_rom_outw((val), (port)) : out_le16((port), (val)))
> -#define outw_p(val, port) ((port) < 1024 ? isa_rom_outw_p((val), (port)) : out_le16((port), (val)))
> +#define outb(val, port)        ((port) < 1024 ? isa_rom_outb((val), (port)) : isa_outb((val), (port)))
> +#define outb_p(val, port) ((port) < 1024 ? isa_rom_outb_p((val), (port)) : isa_outb_p((val), (port)))
> +#define outw(val, port)        ((port) < 1024 ? isa_rom_outw((val), (port)) : isa_outw((val), (port)))
> +#define outw_p(val, port) ((port) < 1024 ? isa_rom_outw_p((val), (port)) : isa_outw_p((val), (port)))
>  #define outl           isa_outl
>  #define outl_p         isa_outl_p
>

Could that have any new side effects on multiplatform kernels (other 
than addresses < 1024 still mangled by wrong translation and IO 
primitive on non-Atari platforms)?

Cheers,

	Michael

  reply	other threads:[~2021-06-01  7:55 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-25  9:06 [PATCH] m68k/mac: Replace macide driver with generic platform driver Finn Thain
2021-04-25 10:25 ` John Paul Adrian Glaubitz
2021-04-26  7:37   ` Finn Thain
2021-04-26  7:48     ` John Paul Adrian Glaubitz
2021-04-27  1:51     ` Michael Schmitz
2021-04-27  3:47       ` Finn Thain
2021-04-27 19:54         ` Michael Schmitz
2021-04-28  6:53           ` Geert Uytterhoeven
2021-06-01  3:32             ` Michael Schmitz
2021-06-01  7:55               ` Michael Schmitz [this message]
2021-06-01  8:43                 ` Geert Uytterhoeven
2021-06-01 21:05                   ` Michael Schmitz
2021-06-02  5:21                   ` [PATCH RFC 0/2] Fix m68k multiplatform ISA support Michael Schmitz
2021-06-02  5:21                     ` [PATCH RFC 1/2] m68k: io_mm.h: conditionalize ISA address translation on Atari Michael Schmitz
2021-06-03  8:23                       ` Finn Thain
2021-06-04  0:19                         ` Michael Schmitz
2021-06-04  5:55                           ` Finn Thain
2021-06-04  7:30                             ` Michael Schmitz
2021-06-04 22:49                               ` Brad Boyer
2021-06-05  1:41                                 ` Michael Schmitz
2021-06-05  6:04                                   ` Brad Boyer
2021-06-05 22:05                                     ` Michael Schmitz
2021-06-06  2:18                                     ` Michael Schmitz
2021-06-06  4:53                                       ` Finn Thain
2021-06-06  5:42                                         ` Michael Schmitz
2021-06-06 23:51                                           ` Brad Boyer
2021-06-06  5:54                                     ` [PATCH RFC 0/2] Add APNE PCMCIA 100 Mbit support Michael Schmitz
2021-06-06  5:54                                       ` [PATCH RFC 1/2] m68k: io_mm.h - add APNE 100 MBit support Michael Schmitz
2021-06-07  8:01                                         ` Geert Uytterhoeven
2021-06-07  8:20                                           ` Michael Schmitz
2021-06-07 11:15                                         ` Geert Uytterhoeven
2021-06-07 19:57                                           ` Michael Schmitz
2021-06-08  6:42                                             ` Geert Uytterhoeven
2021-06-08 21:55                                               ` Michael Schmitz
2021-06-09  6:33                                                 ` Geert Uytterhoeven
2021-06-08 21:56                                               ` Michael Schmitz
2021-06-06  5:54                                       ` [PATCH RFC 2/2] net/8390: apne.c - add 100 Mbit support to apne.c driver Michael Schmitz
2021-06-06 12:42                                         ` kernel test robot
2021-06-07  8:08                                         ` Geert Uytterhoeven
2021-06-07  8:40                                           ` Michael Schmitz
2021-06-07  8:46                                             ` ALeX Kazik
2021-06-08  3:10                                               ` Michael Schmitz
2021-06-07  8:37                                         ` Geert Uytterhoeven
2021-06-07 12:56                                         ` Geert Uytterhoeven
2021-06-13 21:53                                           ` Michael Schmitz
2021-06-09  7:36                                       ` [PATCH v1 0/2] Add APNE PCMCIA 100 Mbit support Michael Schmitz
2021-06-09  7:36                                         ` [PATCH v1 1/2] m68k: io_mm.h - add APNE 100 MBit support Michael Schmitz
2021-06-09  8:04                                           ` Andreas Schwab
2021-06-09 21:54                                             ` Michael Schmitz
2021-06-10  1:09                                               ` Finn Thain
2021-06-10  7:32                                                 ` Geert Uytterhoeven
2021-06-11  2:15                                                   ` Michael Schmitz
2021-06-10  8:53                                               ` Andreas Schwab
2021-06-09  7:36                                         ` [PATCH v1 2/2] net/8390: apne.c - add 100 Mbit support to apne.c driver Michael Schmitz
2021-06-10  2:09                                         ` [PATCH v2 0/2] Add APNE PCMCIA 100 Mbit support Michael Schmitz
2021-06-10  2:09                                           ` [PATCH v2 1/2] m68k: io_mm.h - add APNE 100 MBit support Michael Schmitz
2021-06-10  2:09                                           ` [PATCH v2 2/2] net/8390: apne.c - add 100 Mbit support to apne.c driver Michael Schmitz
2021-06-16 21:11                                           ` [PATCH v2 0/2] Add APNE PCMCIA 100 Mbit support ALeX Kazik
2021-06-17  1:10                                             ` Michael Schmitz
2021-06-04  7:54                           ` [PATCH RFC 1/2] m68k: io_mm.h: conditionalize ISA address translation on Atari Geert Uytterhoeven
2021-06-04 21:36                             ` Michael Schmitz
2021-06-04 23:31                               ` Finn Thain
2021-06-05  0:24                                 ` Finn Thain
2021-06-05  3:48                                 ` Michael Schmitz
2021-06-09  6:35                       ` Geert Uytterhoeven
2021-06-09  7:20                         ` Michael Schmitz
2021-06-02  5:21                     ` [PATCH RFC 2/2] m68k: setup_mm.c: set isa_sex for Atari if ATARI_ROM_ISA not used Michael Schmitz
2021-06-02  7:09                       ` Geert Uytterhoeven
2021-06-02  8:21                         ` Michael Schmitz
2021-06-03  8:29                           ` Finn Thain
2021-06-04  3:02                             ` Michael Schmitz
2021-06-03  3:43                     ` [PATCH RFC 0/2] Fix m68k multiplatform ISA support Michael Schmitz
2021-06-03  7:09                       ` Geert Uytterhoeven
2021-06-04  0:22                         ` Michael Schmitz
2021-06-06  5:28                     ` [PATCH] m68k: Fix " Michael Schmitz
2021-06-07  7:49                       ` Geert Uytterhoeven
2021-06-07  8:17                         ` Michael Schmitz
2021-06-09  7:22                       ` [PATCH v2] m68k: io_mm.h: conditionalize ISA address translation on Atari Michael Schmitz
2021-06-09  7:57                         ` Andreas Schwab
2021-06-09 21:43                           ` Michael Schmitz
2021-06-10  2:04                         ` [PATCH v3] " Michael Schmitz
2021-04-27  8:11       ` [PATCH] m68k/mac: Replace macide driver with generic platform driver Sergei Shtylyov
2021-04-27  8:36         ` John Paul Adrian Glaubitz
2021-04-27 19:29         ` Michael Schmitz
2021-04-25 22:24 ` Michael Schmitz
2021-04-26  7:35   ` Finn Thain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dc393de9-b4ae-5c87-d7c7-b3dd55c514a5@gmail.com \
    --to=schmitzmic@gmail.com \
    --cc=davem@davemloft.net \
    --cc=fthain@fastmail.com.au \
    --cc=funaho@jurai.org \
    --cc=geert@linux-m68k.org \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=hch@lst.de \
    --cc=linux-m68k@lists.linux-m68k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.