* [PATCH 1/3] x86: rename eisa_set_level_irq to elcr_set_level_irq
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 3:18 ` [PATCH 2/3] x86: delete EISA_VLB_PRIMING Kconfig option and code Paul Gortmaker
2015-01-20 3:18 ` [PATCH 3/3] x86: drop support for 1995 era EISA based platforms Paul Gortmaker
2 siblings, 0 replies; 7+ 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
This routine has been around for over a decade, but with EISA
being dead and abandoned for about twice that long, the name can
be kind of confusing. The function is going at the PIC Edge/Level
Configuration Registers (ELCR), so rename it as such and mentally
decouple it from the long since dead EISA bus.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
arch/x86/include/asm/hw_irq.h | 3 +--
arch/x86/kernel/acpi/boot.c | 2 +-
arch/x86/pci/irq.c | 13 +++++++------
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index 9662290..abeb255 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -163,8 +163,7 @@ static inline void unlock_vector_lock(void) {}
extern atomic_t irq_err_count;
extern atomic_t irq_mis_count;
-/* EISA */
-extern void eisa_set_level_irq(unsigned int irq);
+extern void elcr_set_level_irq(unsigned int irq);
/* SMP */
extern __visible void smp_apic_timer_interrupt(struct pt_regs *);
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index d162636..9b3ce03 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -647,7 +647,7 @@ static int acpi_register_gsi_pic(struct device *dev, u32 gsi,
* Make sure all (legacy) PCI IRQs are set as level-triggered.
*/
if (trigger == ACPI_LEVEL_SENSITIVE)
- eisa_set_level_irq(gsi);
+ elcr_set_level_irq(gsi);
#endif
return gsi;
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 5dc6ca5..9bd1154 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -146,19 +146,20 @@ static void __init pirq_peer_trick(void)
/*
* Code for querying and setting of IRQ routes on various interrupt routers.
+ * PIC Edge/Level Control Registers (ELCR) 0x4d0 & 0x4d1.
*/
-void eisa_set_level_irq(unsigned int irq)
+void elcr_set_level_irq(unsigned int irq)
{
unsigned char mask = 1 << (irq & 7);
unsigned int port = 0x4d0 + (irq >> 3);
unsigned char val;
- static u16 eisa_irq_mask;
+ static u16 elcr_irq_mask;
- if (irq >= 16 || (1 << irq) & eisa_irq_mask)
+ if (irq >= 16 || (1 << irq) & elcr_irq_mask)
return;
- eisa_irq_mask |= (1 << irq);
+ elcr_irq_mask |= (1 << irq);
printk(KERN_DEBUG "PCI: setting IRQ %u as level-triggered\n", irq);
val = inb(port);
if (!(val & mask)) {
@@ -965,11 +966,11 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign)
} else if (r->get && (irq = r->get(pirq_router_dev, dev, pirq)) && \
((!(pci_probe & PCI_USE_PIRQ_MASK)) || ((1 << irq) & mask))) {
msg = "found";
- eisa_set_level_irq(irq);
+ elcr_set_level_irq(irq);
} else if (newirq && r->set &&
(dev->class >> 8) != PCI_CLASS_DISPLAY_VGA) {
if (r->set(pirq_router_dev, dev, pirq, newirq)) {
- eisa_set_level_irq(newirq);
+ elcr_set_level_irq(newirq);
msg = "assigned";
irq = newirq;
}
--
2.2.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/3] x86: delete EISA_VLB_PRIMING Kconfig option and code
2015-01-20 3:18 [PATCH 0/3] x86: drop EISA support from x86_32 builds Paul Gortmaker
2015-01-20 3:18 ` [PATCH 1/3] x86: rename eisa_set_level_irq to elcr_set_level_irq Paul Gortmaker
@ 2015-01-20 3:18 ` Paul Gortmaker
2015-01-20 3:18 ` [PATCH 3/3] x86: drop support for 1995 era EISA based platforms Paul Gortmaker
2 siblings, 0 replies; 7+ 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
There was one instance of a VLB card which would emulate
an EISA ID response ID when primed with a certain I/O
handshake.
Since (a) VLB was largely confined to 486 vintage motherboards
from the early/mid 1990s and (b) there was only one card that
needed this and (c) we are dropping EISA support from x86,
everything relating to this option can be removed w/o impacting
any other architectures that might be unwilling to drop EISA
support just yet.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
Documentation/eisa.txt | 4 ++--
drivers/eisa/Kconfig | 10 ----------
drivers/eisa/eisa-bus.c | 10 ----------
drivers/eisa/virtual_root.c | 2 +-
4 files changed, 3 insertions(+), 23 deletions(-)
diff --git a/Documentation/eisa.txt b/Documentation/eisa.txt
index a55e491..983fea4 100644
--- a/Documentation/eisa.txt
+++ b/Documentation/eisa.txt
@@ -172,8 +172,8 @@ virtual_root.force_probe :
Force the probing code to probe EISA slots even when it cannot find an
EISA compliant mainboard (nothing appears on slot 0). Defaults to 0
-(don't force), and set to 1 (force probing) when either
-CONFIG_ALPHA_JENSEN or CONFIG_EISA_VLB_PRIMING are set.
+(don't force), and set to 1 (force probing) when CONFIG_ALPHA_JENSEN
+is set.
** Random notes :
diff --git a/drivers/eisa/Kconfig b/drivers/eisa/Kconfig
index 2705284..c3df390 100644
--- a/drivers/eisa/Kconfig
+++ b/drivers/eisa/Kconfig
@@ -1,16 +1,6 @@
#
# EISA configuration
#
-config EISA_VLB_PRIMING
- bool "Vesa Local Bus priming"
- depends on X86 && EISA
- default n
- ---help---
- Activate this option if your system contains a Vesa Local
- Bus (VLB) card that identify itself as an EISA card (such as
- the Adaptec AHA-284x).
-
- When in doubt, say N.
config EISA_PCI_EISA
bool "Generic PCI/EISA bridge"
diff --git a/drivers/eisa/eisa-bus.c b/drivers/eisa/eisa-bus.c
index 612afea..805c4dc 100644
--- a/drivers/eisa/eisa-bus.c
+++ b/drivers/eisa/eisa-bus.c
@@ -81,16 +81,6 @@ static char __init *decode_eisa_sig(unsigned long addr)
int i;
for (i = 0; i < 4; i++) {
-#ifdef CONFIG_EISA_VLB_PRIMING
- /*
- * This ugly stuff is used to wake up VL-bus cards
- * (AHA-284x is the only known example), so we can
- * read the EISA id.
- *
- * Thankfully, this only exists on x86...
- */
- outb(0x80 + i, addr);
-#endif
sig[i] = inb(addr + i);
if (!i && (sig[0] & 0x80))
diff --git a/drivers/eisa/virtual_root.c b/drivers/eisa/virtual_root.c
index 535e4f9..432797f 100644
--- a/drivers/eisa/virtual_root.c
+++ b/drivers/eisa/virtual_root.c
@@ -14,7 +14,7 @@
#include <linux/moduleparam.h>
#include <linux/init.h>
-#if defined(CONFIG_ALPHA_JENSEN) || defined(CONFIG_EISA_VLB_PRIMING)
+#if defined(CONFIG_ALPHA_JENSEN)
#define EISA_FORCE_PROBE_DEFAULT 1
#else
#define EISA_FORCE_PROBE_DEFAULT 0
--
2.2.1
^ permalink raw reply [flat|nested] 7+ 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 ` [PATCH 1/3] x86: rename eisa_set_level_irq to elcr_set_level_irq Paul Gortmaker
2015-01-20 3:18 ` [PATCH 2/3] x86: delete EISA_VLB_PRIMING Kconfig option and code Paul Gortmaker
@ 2015-01-20 3:18 ` Paul Gortmaker
2015-01-20 4:05 ` Maciej W. Rozycki
2 siblings, 1 reply; 7+ 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] 7+ messages in thread