LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* Re: [PATCH 3/3] x86: drop support for 1995 era EISA based platforms
@ 2015-01-21 16:42 tedheadster
  0 siblings, 0 replies; 5+ messages in thread
From: tedheadster @ 2015-01-21 16:42 UTC (permalink / raw)
  To: linux-kernel

I too have old EISA systems that I am using with current kernels.
They're good for testing, having uncovered a kernel bug previously
with Thomas Gleixner:

https://lkml.org/lkml/2013/11/13/424

- Matthew

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/3] x86: drop support for 1995 era EISA based platforms
  2015-01-20  6:16     ` Linus Torvalds
@ 2015-01-20 19:50       ` Maciej W. Rozycki
  0 siblings, 0 replies; 5+ messages in thread
From: Maciej W. Rozycki @ 2015-01-20 19:50 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Paul Gortmaker, Linux Kernel Mailing List, H. Peter Anvin,
	Ingo Molnar, Thomas Gleixner, the arch/x86 maintainers

On Tue, 20 Jan 2015, Linus Torvalds wrote:

> >  Well, I'd like to keep my x86 box up and alive, to support EISA FDDI
> > equipment I maintain if nothing else -- which in particular means the
> > current head version of Linux, not some ancient branch.
> 
> So if we actually have a user, and it works, then no, we're not
> removing EISA support. It's not like it hurts us or is in some way
> fundamentally broken, like the old i386 code was (i386 kernel page
> fault semantics really were broken, and the lack of some instructions
> made it more painful to maintain than needed - not like EISA at all,
> which is just a pure add-on on the side).

 Thanks.  Last version I tried was 3.18.0-rc1-next-20141023 sometime last 
November.  It worked just fine, booted to the multiuser mode with no 
issue.  I'll have to refresh the build sometime.

 It's a plain EISA box, no PCI.  The EISA FDDI board referred works fine 
(it uses our DMA API for bus mastering) as does an ISA 3c509B Ethernet 
adapter configured for the EISA mode.  The card supports it -- it looks 
like a true EISA board to software then, there's no need to poke at random 
port I/O locations anymore to detect it -- as does our driver.

 I have a small patch outstanding to reserve the BIOS area at 0xffff0000 
(used at reset as per the x86 architecture definition) so that systems 
that do not support the 0xe820 call do not attempt to allocate MMIO in 
that range.  It may matter for some old PCI systems as well, I suppose.  
I just need to verify it does not cause a conflict with systems that do 
support that call.

 Other than that it seems maintenance-free to me.

  Maciej

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/3] x86: drop support for 1995 era EISA based platforms
  2015-01-20  4:05   ` Maciej W. Rozycki
@ 2015-01-20  6:16     ` Linus Torvalds
  2015-01-20 19:50       ` Maciej W. Rozycki
  0 siblings, 1 reply; 5+ messages in thread
From: Linus Torvalds @ 2015-01-20  6:16 UTC (permalink / raw)
  To: Maciej W. Rozycki
  Cc: Paul Gortmaker, Linux Kernel Mailing List, H. Peter Anvin,
	Ingo Molnar, Thomas Gleixner, the arch/x86 maintainers

On Tue, Jan 20, 2015 at 4:05 PM, Maciej W. Rozycki <macro@linux-mips.org> wrote:
>
>  Well, I'd like to keep my x86 box up and alive, to support EISA FDDI
> equipment I maintain if nothing else -- which in particular means the
> current head version of Linux, not some ancient branch.

So if we actually have a user, and it works, then no, we're not
removing EISA support. It's not like it hurts us or is in some way
fundamentally broken, like the old i386 code was (i386 kernel page
fault semantics really were broken, and the lack of some instructions
made it more painful to maintain than needed - not like EISA at all,
which is just a pure add-on on the side).

              Linus

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/3] x86: drop support for 1995 era EISA based platforms
  2015-01-20  3:18 ` [PATCH 3/3] x86: drop support for 1995 era EISA based platforms Paul Gortmaker
@ 2015-01-20  4:05   ` Maciej W. Rozycki
  2015-01-20  6:16     ` Linus Torvalds
  0 siblings, 1 reply; 5+ messages in thread
From: Maciej W. Rozycki @ 2015-01-20  4:05 UTC (permalink / raw)
  To: Paul Gortmaker
  Cc: linux-kernel, H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86,
	Linus Torvalds

On Mon, 19 Jan 2015, Paul Gortmaker wrote:

> The Kconfig text says it all, with "The EISA bus saw limited use
> between 1988 and 1995 when it was made obsolete by the PCI bus."
> 
> That means typically 486/586 CPUs in the 33-166MHz range, and
> 8-64MB of installed RAM in typical EISA machines of that era.
> With the additional cost, they were also typically rare, and not
> getting widescale deployment.
> 
> Given that it is 20 years on since its demise, and the above specs
> might seem just barely acceptable for a wireless router today, lets
> stop forcing everyone to build EISA infrastructure and assoc. drivers
> during their routine build coverage testing for no value whatsoever.
> 
> We'd already removed some obsolete 10Mbit EISA network drivers in
> commit bca94cffabf5c9f2399da34eab00bd534bf3735b ("drivers/net: delete
> 8390 based EISA drivers") over two years ago for the same reason.
> 
> If we don't immediately expire EISA completely, we can at least limit
> its impact and support/testing overhead to the arch like alpha and
> parisc that are essentially frozen in time from a hardware perspective.
> 
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> ---

 Well, I'd like to keep my x86 box up and alive, to support EISA FDDI 
equipment I maintain if nothing else -- which in particular means the 
current head version of Linux, not some ancient branch.

 Is the maintenance overhead for this stuff really that high?  The amount 
of code you're dropping here does not really impress me.  And it's almost 
exclusively APIC stuff that's straightforward and I can probably give it 
some attention too -- as you may have been aware I have some experience in 
this area, especially where older hardware is concerned.  Unfortunately my 
EISA box is UP, so I can't offer run-time validation for APIC/SMP code at 
the moment, but as I say, this is really plain stuff.

 I don't require that everyone around the planet validates EISA support of 
course -- if that is what really concerns you (quite validly, IMHO), then 
how about a configuration option instead to annotate more exotic stuff 
with, so that people who have, say, commercial interest in Linux only, can 
tick it off and care of what brings them income only?

  Maciej

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/3] x86: drop support for 1995 era EISA based platforms
  2015-01-20  3:18 [PATCH 0/3] x86: drop EISA support from x86_32 builds Paul Gortmaker
@ 2015-01-20  3:18 ` Paul Gortmaker
  2015-01-20  4:05   ` Maciej W. Rozycki
  0 siblings, 1 reply; 5+ messages in thread
From: Paul Gortmaker @ 2015-01-20  3:18 UTC (permalink / raw)
  To: linux-kernel
  Cc: H. Peter Anvin, Ingo Molnar, Thomas Gleixner, x86,
	Linus Torvalds, Paul Gortmaker

The Kconfig text says it all, with "The EISA bus saw limited use
between 1988 and 1995 when it was made obsolete by the PCI bus."

That means typically 486/586 CPUs in the 33-166MHz range, and
8-64MB of installed RAM in typical EISA machines of that era.
With the additional cost, they were also typically rare, and not
getting widescale deployment.

Given that it is 20 years on since its demise, and the above specs
might seem just barely acceptable for a wireless router today, lets
stop forcing everyone to build EISA infrastructure and assoc. drivers
during their routine build coverage testing for no value whatsoever.

We'd already removed some obsolete 10Mbit EISA network drivers in
commit bca94cffabf5c9f2399da34eab00bd534bf3735b ("drivers/net: delete
8390 based EISA drivers") over two years ago for the same reason.

If we don't immediately expire EISA completely, we can at least limit
its impact and support/testing overhead to the arch like alpha and
parisc that are essentially frozen in time from a hardware perspective.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
 arch/x86/Kconfig               | 18 --------------
 arch/x86/include/asm/mpspec.h  |  4 ----
 arch/x86/kernel/acpi/boot.c    |  6 -----
 arch/x86/kernel/apic/io_apic.c | 54 ------------------------------------------
 arch/x86/kernel/mpparse.c      | 11 +--------
 arch/x86/kernel/traps.c        | 13 ----------
 drivers/acpi/pci_irq.c         |  2 +-
 7 files changed, 2 insertions(+), 106 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index ba397bd..25ead19 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2291,24 +2291,6 @@ config ISA
 	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
 	  newer boards don't support it.  If you have ISA, say Y, otherwise N.
 
-config EISA
-	bool "EISA support"
-	depends on ISA
-	---help---
-	  The Extended Industry Standard Architecture (EISA) bus was
-	  developed as an open alternative to the IBM MicroChannel bus.
-
-	  The EISA bus provided some of the features of the IBM MicroChannel
-	  bus while maintaining backward compatibility with cards made for
-	  the older ISA bus.  The EISA bus saw limited use between 1988 and
-	  1995 when it was made obsolete by the PCI bus.
-
-	  Say Y here if you are building a kernel for an EISA-based machine.
-
-	  Otherwise, say N.
-
-source "drivers/eisa/Kconfig"
-
 config SCx200
 	tristate "NatSemi SCx200 support"
 	---help---
diff --git a/arch/x86/include/asm/mpspec.h b/arch/x86/include/asm/mpspec.h
index b07233b..16926bb 100644
--- a/arch/x86/include/asm/mpspec.h
+++ b/arch/x86/include/asm/mpspec.h
@@ -33,10 +33,6 @@ extern unsigned int def_to_bigsmp;
 
 #endif /* CONFIG_X86_64 */
 
-#ifdef CONFIG_EISA
-extern int mp_bus_id_to_type[MAX_MP_BUSSES];
-#endif
-
 extern DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES);
 
 extern unsigned int boot_cpu_physical_apicid;
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 9b3ce03..c26aa13 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1072,12 +1072,6 @@ static void __init mp_config_acpi_legacy_irqs(void)
 	int i;
 	struct mpc_intsrc mp_irq;
 
-#ifdef CONFIG_EISA
-	/*
-	 * Fabricate the legacy ISA bus (bus #31).
-	 */
-	mp_bus_id_to_type[MP_ISA_BUS] = MP_BUS_ISA;
-#endif
 	set_bit(MP_ISA_BUS, mp_bus_not_pci);
 	pr_debug("Bus #%d is ISA\n", MP_ISA_BUS);
 
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 3f5f604..c28faff 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -168,10 +168,6 @@ struct mpc_intsrc mp_irqs[MAX_IRQ_SOURCES];
 /* # of MP IRQ source entries */
 int mp_irq_entries;
 
-#ifdef CONFIG_EISA
-int mp_bus_id_to_type[MAX_MP_BUSSES];
-#endif
-
 DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES);
 
 int skip_ioapic_setup;
@@ -792,37 +788,12 @@ static int __init find_isa_irq_apic(int irq, int type)
 	return -1;
 }
 
-#ifdef CONFIG_EISA
-/*
- * EISA Edge/Level control register, ELCR
- */
-static int EISA_ELCR(unsigned int irq)
-{
-	if (irq < nr_legacy_irqs()) {
-		unsigned int port = 0x4d0 + (irq >> 3);
-		return (inb(port) >> (irq & 7)) & 1;
-	}
-	apic_printk(APIC_VERBOSE, KERN_INFO
-			"Broken MPtable reports ISA irq %d\n", irq);
-	return 0;
-}
-
-#endif
-
 /* ISA interrupts are always polarity zero edge triggered,
  * when listed as conforming in the MP table. */
 
 #define default_ISA_trigger(idx)	(0)
 #define default_ISA_polarity(idx)	(0)
 
-/* EISA interrupts are always polarity zero and can be edge or level
- * trigger depending on the ELCR value.  If an interrupt is listed as
- * EISA conforming in the MP table, that means its trigger type must
- * be read in from the ELCR */
-
-#define default_EISA_trigger(idx)	(EISA_ELCR(mp_irqs[idx].srcbusirq))
-#define default_EISA_polarity(idx)	default_ISA_polarity(idx)
-
 /* PCI interrupts are always polarity one level triggered,
  * when listed as conforming in the MP table. */
 
@@ -886,31 +857,6 @@ static int irq_trigger(int idx)
 				trigger = default_ISA_trigger(idx);
 			else
 				trigger = default_PCI_trigger(idx);
-#ifdef CONFIG_EISA
-			switch (mp_bus_id_to_type[bus]) {
-				case MP_BUS_ISA: /* ISA pin */
-				{
-					/* set before the switch */
-					break;
-				}
-				case MP_BUS_EISA: /* EISA pin */
-				{
-					trigger = default_EISA_trigger(idx);
-					break;
-				}
-				case MP_BUS_PCI: /* PCI pin */
-				{
-					/* set before the switch */
-					break;
-				}
-				default:
-				{
-					pr_warn("broken BIOS!!\n");
-					trigger = 1;
-					break;
-				}
-			}
-#endif
 			break;
 		case 1: /* edge */
 		{
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c
index 2d2a237..cb4cfac 100644
--- a/arch/x86/kernel/mpparse.c
+++ b/arch/x86/kernel/mpparse.c
@@ -95,20 +95,11 @@ static void __init MP_bus_info(struct mpc_bus *m)
 #endif
 
 	set_bit(m->busid, mp_bus_not_pci);
-	if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA) - 1) == 0) {
-#ifdef CONFIG_EISA
-		mp_bus_id_to_type[m->busid] = MP_BUS_ISA;
-#endif
-	} else if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI) - 1) == 0) {
+	if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI) - 1) == 0) {
 		if (x86_init.mpparse.mpc_oem_pci_bus)
 			x86_init.mpparse.mpc_oem_pci_bus(m);
 
 		clear_bit(m->busid, mp_bus_not_pci);
-#ifdef CONFIG_EISA
-		mp_bus_id_to_type[m->busid] = MP_BUS_PCI;
-	} else if (strncmp(str, BUSTYPE_EISA, sizeof(BUSTYPE_EISA) - 1) == 0) {
-		mp_bus_id_to_type[m->busid] = MP_BUS_EISA;
-#endif
 	} else
 		pr_warn("Unknown bustype %s - ignoring\n", str);
 }
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 88900e2..9c6c078 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -37,11 +37,6 @@
 #include <linux/smp.h>
 #include <linux/io.h>
 
-#ifdef CONFIG_EISA
-#include <linux/ioport.h>
-#include <linux/eisa.h>
-#endif
-
 #if defined(CONFIG_EDAC)
 #include <linux/edac.h>
 #endif
@@ -876,14 +871,6 @@ void __init trap_init(void)
 {
 	int i;
 
-#ifdef CONFIG_EISA
-	void __iomem *p = early_ioremap(0x0FFFD9, 4);
-
-	if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
-		EISA_bus = 1;
-	early_iounmap(p, 4);
-#endif
-
 	set_intr_gate(X86_TRAP_DE, divide_error);
 	set_intr_gate_ist(X86_TRAP_NMI, &nmi, NMI_STACK);
 	/* int4 can be called from all */
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 5277a0e..930beaa 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -370,7 +370,7 @@ static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin)
 	return NULL;
 }
 
-#if IS_ENABLED(CONFIG_ISA) || IS_ENABLED(CONFIG_EISA)
+#if IS_ENABLED(CONFIG_ISA)
 static int acpi_isa_register_gsi(struct pci_dev *dev)
 {
 	u32 dev_gsi;
-- 
2.2.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-01-21 16:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-21 16:42 [PATCH 3/3] x86: drop support for 1995 era EISA based platforms tedheadster
  -- strict thread matches above, loose matches on Subject: below --
2015-01-20  3:18 [PATCH 0/3] x86: drop EISA support from x86_32 builds Paul Gortmaker
2015-01-20  3:18 ` [PATCH 3/3] x86: drop support for 1995 era EISA based platforms Paul Gortmaker
2015-01-20  4:05   ` Maciej W. Rozycki
2015-01-20  6:16     ` Linus Torvalds
2015-01-20 19:50       ` Maciej W. Rozycki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).