* [Linux-ia64] Two PCI Hotplug Drivers for 2.5
@ 2002-10-22 23:28 Lee, Jung-Ik
0 siblings, 0 replies; only message in thread
From: Lee, Jung-Ik @ 2002-10-22 23:28 UTC (permalink / raw)
To: linux-ia64
[-- Attachment #1: Type: text/plain, Size: 4205 bytes --]
Hi Greg,
Please find the attached two PCI hotplug drivers for 2.5.
intcphp: New Intel's PHP driver for CPQ or equivalent Intel
controllers for IA32/IA64, ACPI/legacy platforms.
This driver is needed for IA64 servers (Lion,
Tiger, etc), and has been verified on 2.5.39
acpiphp: ACPI based PHP driver updated to support CAL(*).
ACPI based ctrl/slot operations are abstracted to
CAL module. This has been verified on 2.5.39 and
Feature/functionality remain the same.
Patch against Tak's 2.5.39 patch is included.
(*) CAL is a Controller Abstraction Layer that we came up to provide a
convenient and uniform interface to different types of hotplug controllers.
CAL abstracts details of individual HP controller/slot operations and also
provides flexibility of binding different CAL modules to single php driver
core. Both intcphp driver and acpiphp driver support CAL interface.
The reason why we separated slot/controller operations(event management) as
CAL is to make most of Common hotplug driver components not only for Hotplug
PCI driver but also for Hotplug-Everything, required for Atlas project, and
other server platforms.
For Hotplug-everything - Hotplug-PCI, IO-Node, and memory, etc.-, ACPI based
Resource Management and Event management are key common components.
To design an ACPI based PCI HP driver, we need a combination of the two
common Hotplug-Everything components and PCI HP driver core.
1. ACPI based PHPRM(Resource Management/configuration)
2. Event Management(ACPI based or OEM ctrl based CAL)
3. PHP driver core: usage model of PHP
For Hotplug-Others, #1, and #2 should be the same and #3 will be replaced
with Hotplug-Other driver core.
This release is the first step to achieve the goal of the Common HotPlug
architecture while minimizing affects on existing PHP driver features and
functionalities. Current status of the drivers is:
+ Both conform to CAL.
+ hotplug_ops routines are identical.
+ Functionality of Resource managements(PHPRM) are the
same and soon will share phprm_acpi.
+ Both will use common php core.
The ultimate difference between acpiphp driver and intcphp driver,
therefore, will be the CAL implementation only. I.e., acpiphp will use ACPI
based event management for controller/slot operations thru CAL interface,
while intcphp can use either it's own HPC controller based CAL or acpiphp's
ACPI based event management CAL.
We've tested two drivers with 2.5.39/IA64. This should also apply to 2.5.41
and later. 2.4 backport will be available later as needed.
Please apply.
Thanks,
Jung-Ik Lee/Intel,
Takayoshi Kochi/NEC,
Tony Luck/Intel
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LIST of attached:
1. arch_ia64_2539.diff:
Fix for PCI bridge cards. Accepted by David Mosberger.
2. drivers_acpi_2539.diff:
Fix for slot configuration. Accepted by Andrew Grover.
3. hotplug_2539_patch.diff.gz:
Patch against 2.5.39 + acpiphp 2.5.39 patch
Config.help | 10
Config.in | 1
Makefile | 22
phpcal.h | 204 +++
phpdvr.h | 490 +++++++
acpiphp.h | 50
acpiphp_core.c | 207 +--
acpiphp_glue.c | 449 ++----
acpiphp_pci.c | 48
acpiphp_res.c | 46
phpcal_acpi/Makefile | 23
phpcal_acpi/acpiphp_cal.c | 336 +++++
phpcal_acpi/acpiphp_cal.h | 86 +
intcphp_core.c | 859 +++++++++++++
intcphp_ctrl.c | 1916 +++++++++++++++++++++++++++++
intcphp_pci.c | 1295 ++++++++++++++++++++
intcphp_proc.c | 212 +++
phpcal_intc/Makefile | 23
phpcal_intc/intcphp_cal.c | 2260 +++++++++++++++++++++++++++++++++++
phpcal_intc/intcphp_cal.h | 158 ++
phprm.h | 70 +
phprm_acpi.c | 2951
++++++++++++++++++++++++++++++++++++++++++++++
phprm_acpi.h | 152 ++
23 files changed, 11359 insertions(+), 509 deletions(-)
The following files are excluded for this release and will be available
later as needed.
phprm_legacy.[ch] for non-ACPI platforms,
intc_isa_ctrl.[ch] for ISA based PHP controller.
[-- Attachment #2: arch_ia64_2539.diff --]
[-- Type: application/octet-stream, Size: 987 bytes --]
diff -urN linux-2.5.39-ia64-020928/arch/ia64/pci/pci.c linux-2.5.39-phpv/arch/ia64/pci/pci.c
--- linux-2.5.39-ia64-020928/arch/ia64/pci/pci.c Fri Sep 27 14:49:51 2002
+++ linux-2.5.39-phpv/arch/ia64/pci/pci.c Fri Oct 18 02:39:00 2002
@@ -141,13 +141,13 @@
/*
* Called after each bus is probed, but before its children are examined.
*/
-void __init
+void __devinit
pcibios_fixup_bus (struct pci_bus *b)
{
return;
}
-void __init
+void __devinit
pcibios_update_resource (struct pci_dev *dev, struct resource *root,
struct resource *res, int resource)
{
@@ -163,7 +163,7 @@
/* ??? FIXME -- record old value for shutdown. */
}
-void __init
+void __devinit
pcibios_update_irq (struct pci_dev *dev, int irq)
{
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
@@ -171,7 +171,7 @@
/* ??? FIXME -- record old value for shutdown. */
}
-void __init
+void __devinit
pcibios_fixup_pbus_ranges (struct pci_bus * bus, struct pbus_set_ranges_data * ranges)
{
}
[-- Attachment #3: drivers_acpi_2539.diff --]
[-- Type: application/octet-stream, Size: 1639 bytes --]
diff -urN linux-2.5.39-ia64-020928/drivers/acpi/acpi_ksyms.c linux-2.5.39-phpv/drivers/acpi/acpi_ksyms.c
--- linux-2.5.39-ia64-020928/drivers/acpi/acpi_ksyms.c Fri Sep 27 14:49:43 2002
+++ linux-2.5.39-phpv/drivers/acpi/acpi_ksyms.c Fri Oct 18 15:51:49 2002
@@ -87,6 +87,7 @@
EXPORT_SYMBOL(acpi_enter_sleep_state);
EXPORT_SYMBOL(acpi_get_system_info);
+
/* ACPI OS Services Layer (acpi_osl.c) */
EXPORT_SYMBOL(acpi_os_free);
@@ -100,6 +101,8 @@
EXPORT_SYMBOL(acpi_os_delete_semaphore);
EXPORT_SYMBOL(acpi_os_wait_semaphore);
+EXPORT_SYMBOL(acpi_os_read_pci_configuration);
+
/* ACPI Utilities (acpi_utils.c) */
EXPORT_SYMBOL(acpi_extract_package);
@@ -125,4 +128,18 @@
EXPORT_SYMBOL(acpi_bus_register_driver);
EXPORT_SYMBOL(acpi_bus_unregister_driver);
+EXPORT_SYMBOL(acpi_get_devices);
+
#endif /*CONFIG_ACPI_BUS*/
+
+
+/* ACPI PCI Driver (pci_irq.c) */
+
+#ifdef CONFIG_ACPI_PCI
+
+#include <linux/pci.h>
+extern int acpi_pci_irq_enable(struct pci_dev *dev);
+EXPORT_SYMBOL(acpi_pci_irq_enable);
+extern int acpi_pci_irq_lookup (int segment, int bus, int device, int pin);
+EXPORT_SYMBOL(acpi_pci_irq_lookup);
+#endif /*CONFIG_ACPI_PCI */
diff -urN linux-2.5.39-ia64-020928/drivers/acpi/pci_irq.c linux-2.5.39-phpv/drivers/acpi/pci_irq.c
--- linux-2.5.39-ia64-020928/drivers/acpi/pci_irq.c Fri Oct 11 16:38:48 2002
+++ linux-2.5.39-phpv/drivers/acpi/pci_irq.c Fri Oct 18 15:50:57 2002
@@ -232,7 +232,7 @@
PCI Interrupt Routing Support
-------------------------------------------------------------------------- */
-static int
+int
acpi_pci_irq_lookup (
int segment,
int bus,
[-- Attachment #4: hotplug_patch_2539.diff.gz --]
[-- Type: application/octet-stream, Size: 73872 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-10-22 23:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-10-22 23:28 [Linux-ia64] Two PCI Hotplug Drivers for 2.5 Lee, Jung-Ik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox