diff --git a/debian/changelog b/debian/changelog index 0cc567484..554b2eba9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,10 @@ linux-2.6 (2.6.34-1~experimental.3) UNRELEASED; urgency=low [ Ben Hutchings ] * ipr: add writeq definition if needed (Closes: #584840) + * [mips] Fix boot from ATA hard drives (Closes: #584784): + - Set io_map_base for several PCI bridges lacking it + - Replace per-platform built-in IDE drivers with libata-based drivers + - Enable BLK_DEV_SD as built-in on all platforms -- Ben Hutchings Wed, 09 Jun 2010 23:03:38 +0100 diff --git a/debian/config/mips/config.4kc-malta b/debian/config/mips/config.4kc-malta index 3c4cd4436..591145087 100644 --- a/debian/config/mips/config.4kc-malta +++ b/debian/config/mips/config.4kc-malta @@ -134,12 +134,14 @@ CONFIG_SATA_SIL=y # CONFIG_SATA_VITESSE is not set CONFIG_PATA_CMD64X=y CONFIG_ATA_GENERIC=y +CONFIG_PATA_HPT366=y CONFIG_PATA_MPIIX=y CONFIG_PATA_OLDPIIX=y CONFIG_PATA_NETCELL=y CONFIG_PATA_NS87410=y CONFIG_PATA_PDC_OLD=y CONFIG_PATA_PDC2027X=y +CONFIG_PATA_PLATFORM=y CONFIG_PATA_SIL680=y ## @@ -359,38 +361,7 @@ CONFIG_I2C_VOODOO3=m ## ## file: drivers/ide/Kconfig ## -CONFIG_IDE=y -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_IDE_GD=y -CONFIG_IDE_GD_ATA=y -CONFIG_BLK_DEV_IDECD=m -CONFIG_BLK_DEV_IDETAPE=m -# CONFIG_IDE_TASK_IOCTL is not set -CONFIG_IDE_GENERIC=y -# CONFIG_BLK_DEV_OFFBOARD is not set -# CONFIG_BLK_DEV_GENERIC is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD74XX is not set -# CONFIG_BLK_DEV_CMD64X is not set -# CONFIG_BLK_DEV_TRIFLEX is not set -# CONFIG_BLK_DEV_CY82C693 is not set -# CONFIG_BLK_DEV_CS5520 is not set -# CONFIG_BLK_DEV_CS5530 is not set -CONFIG_BLK_DEV_HPT366=y -# CONFIG_BLK_DEV_JMICRON is not set -# CONFIG_BLK_DEV_SC1200 is not set -CONFIG_BLK_DEV_PIIX=y -# CONFIG_BLK_DEV_IT821X is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_TRM290 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE is not set ## ## file: drivers/input/gameport/Kconfig @@ -869,6 +840,7 @@ CONFIG_RTC_DRV_M48T86=m ## file: drivers/scsi/Kconfig ## CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ARCMSR=m CONFIG_SCSI_HPTIOP=m diff --git a/debian/config/mips/config.5kc-malta b/debian/config/mips/config.5kc-malta index f33c547fc..cb6b86949 100644 --- a/debian/config/mips/config.5kc-malta +++ b/debian/config/mips/config.5kc-malta @@ -120,12 +120,14 @@ CONFIG_SATA_SIL=y CONFIG_SATA_INIC162X=m CONFIG_PATA_CMD64X=y CONFIG_ATA_GENERIC=y +CONFIG_PATA_HPT366=y CONFIG_PATA_MPIIX=y CONFIG_PATA_OLDPIIX=y CONFIG_PATA_NETCELL=y CONFIG_PATA_NS87410=y CONFIG_PATA_PDC_OLD=y CONFIG_PATA_PDC2027X=y +CONFIG_PATA_PLATFORM=y CONFIG_PATA_SIL680=y ## @@ -348,40 +350,7 @@ CONFIG_I2C_VOODOO3=m ## ## file: drivers/ide/Kconfig ## -CONFIG_IDE=y -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_IDE_GD=y -CONFIG_IDE_GD_ATA=y -CONFIG_BLK_DEV_IDECD=m -CONFIG_BLK_DEV_IDETAPE=m -# CONFIG_IDE_TASK_IOCTL is not set -CONFIG_IDE_PROC_FS=y -CONFIG_IDE_GENERIC=y -CONFIG_IDEPCI_PCIBUS_ORDER=y -# CONFIG_BLK_DEV_OFFBOARD is not set -# CONFIG_BLK_DEV_GENERIC is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD74XX is not set -# CONFIG_BLK_DEV_CMD64X is not set -# CONFIG_BLK_DEV_TRIFLEX is not set -# CONFIG_BLK_DEV_CY82C693 is not set -# CONFIG_BLK_DEV_CS5520 is not set -# CONFIG_BLK_DEV_CS5530 is not set -CONFIG_BLK_DEV_HPT366=y -# CONFIG_BLK_DEV_JMICRON is not set -# CONFIG_BLK_DEV_SC1200 is not set -CONFIG_BLK_DEV_PIIX=y -# CONFIG_BLK_DEV_IT821X is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_TRM290 is not set -# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE is not set ## ## file: drivers/ieee1394/Kconfig @@ -916,6 +885,7 @@ CONFIG_RTC_DRV_M48T86=m ## file: drivers/scsi/Kconfig ## CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y CONFIG_SCSI_ARCMSR=m CONFIG_SCSI_HPTIOP=m CONFIG_SCSI_DMX3191D=m diff --git a/debian/config/mips/config.sb1a-bcm91480b b/debian/config/mips/config.sb1a-bcm91480b index f7afcbad5..821acedfd 100644 --- a/debian/config/mips/config.sb1a-bcm91480b +++ b/debian/config/mips/config.sb1a-bcm91480b @@ -120,7 +120,7 @@ CONFIG_CMDLINE="" ## ## file: drivers/ata/Kconfig ## -CONFIG_ATA=m +CONFIG_ATA=y CONFIG_SATA_AHCI=m CONFIG_SATA_SIL24=m CONFIG_SATA_SVW=m @@ -140,12 +140,14 @@ CONFIG_PATA_ALI=m CONFIG_PATA_AMD=m CONFIG_PATA_CMD64X=m CONFIG_PATA_CS5530=m +CONFIG_PATA_CYPRESS=y CONFIG_PATA_EFAR=m CONFIG_PATA_TRIFLEX=m CONFIG_PATA_MPIIX=m CONFIG_PATA_OLDPIIX=m CONFIG_PATA_NS87415=m CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_PLATFORM=y CONFIG_PATA_SC1200=m CONFIG_PATA_SERVERWORKS=m CONFIG_PATA_PDC2027X=m @@ -288,36 +290,7 @@ CONFIG_I2C_STUB=m ## ## file: drivers/ide/Kconfig ## -CONFIG_IDE=y -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_IDE_GD=y -CONFIG_IDE_GD_ATA=y -CONFIG_BLK_DEV_IDECD=m -CONFIG_BLK_DEV_IDETAPE=m -CONFIG_IDE_GENERIC=y -# CONFIG_BLK_DEV_OFFBOARD is not set -# CONFIG_BLK_DEV_GENERIC is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD74XX is not set -# CONFIG_BLK_DEV_CMD64X is not set -# CONFIG_BLK_DEV_TRIFLEX is not set -CONFIG_BLK_DEV_CY82C693=m -# CONFIG_BLK_DEV_CS5520 is not set -# CONFIG_BLK_DEV_CS5530 is not set -CONFIG_BLK_DEV_HPT366=m -# CONFIG_BLK_DEV_SC1200 is not set -CONFIG_BLK_DEV_PIIX=m -# CONFIG_BLK_DEV_IT821X is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -CONFIG_BLK_DEV_TRM290=m -# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_IDE is not set ## ## file: drivers/infiniband/Kconfig @@ -566,6 +539,8 @@ CONFIG_BROADCOM_PHY=y ## ## file: drivers/scsi/Kconfig ## +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y # CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set diff --git a/debian/config/mipsel/config.r5k-cobalt b/debian/config/mipsel/config.r5k-cobalt index 702162fbd..060a61844 100644 --- a/debian/config/mipsel/config.r5k-cobalt +++ b/debian/config/mipsel/config.r5k-cobalt @@ -88,6 +88,13 @@ CONFIG_CMDLINE="" # CONFIG_TOSHIBA_RBTX4927 is not set # CONFIG_TOSHIBA_RBTX4938 is not set +## +## file: drivers/ata/Kconfig +## +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_PATA_VIA=y + ## ## file: drivers/base/Kconfig ## @@ -163,36 +170,7 @@ CONFIG_VT_CONSOLE=y ## ## file: drivers/ide/Kconfig ## -CONFIG_IDE=y -# CONFIG_BLK_DEV_IDE_SATA is not set -CONFIG_IDE_GD=y -CONFIG_IDE_GD_ATA=y -# CONFIG_BLK_DEV_IDECD is not set -# CONFIG_BLK_DEV_IDETAPE is not set -CONFIG_IDE_GENERIC=y -# CONFIG_BLK_DEV_OFFBOARD is not set -# CONFIG_BLK_DEV_GENERIC is not set -# CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_AEC62XX is not set -# CONFIG_BLK_DEV_ALI15X3 is not set -# CONFIG_BLK_DEV_AMD74XX is not set -# CONFIG_BLK_DEV_CMD64X is not set -# CONFIG_BLK_DEV_TRIFLEX is not set -# CONFIG_BLK_DEV_CY82C693 is not set -# CONFIG_BLK_DEV_CS5520 is not set -# CONFIG_BLK_DEV_CS5530 is not set -# CONFIG_BLK_DEV_HPT366 is not set -# CONFIG_BLK_DEV_SC1200 is not set -# CONFIG_BLK_DEV_PIIX is not set -# CONFIG_BLK_DEV_IT821X is not set -# CONFIG_BLK_DEV_NS87415 is not set -# CONFIG_BLK_DEV_PDC202XX_OLD is not set -# CONFIG_BLK_DEV_PDC202XX_NEW is not set -# CONFIG_BLK_DEV_SVWKS is not set -# CONFIG_BLK_DEV_SIIMAGE is not set -# CONFIG_BLK_DEV_SLC90E66 is not set -# CONFIG_BLK_DEV_TRM290 is not set -CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_IDE is not set ## ## file: drivers/infiniband/Kconfig @@ -590,6 +568,8 @@ CONFIG_RTC_DRV_CMOS=y ## ## file: drivers/scsi/Kconfig ## +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y # CONFIG_SCSI_MULTI_LUN is not set # CONFIG_SCSI_CONSTANTS is not set # CONFIG_SCSI_LOGGING is not set diff --git a/debian/patches/bugfix/mips/mips-Set-io_map_base-for-several-PCI-bridges-lacking.patch b/debian/patches/bugfix/mips/mips-Set-io_map_base-for-several-PCI-bridges-lacking.patch new file mode 100644 index 000000000..d4f1e0cb3 --- /dev/null +++ b/debian/patches/bugfix/mips/mips-Set-io_map_base-for-several-PCI-bridges-lacking.patch @@ -0,0 +1,85 @@ +From 75841ebf0d47558653b21d6cc88942c397d40a98 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Sun, 13 Jun 2010 21:23:29 +0100 +Subject: [PATCH] mips: Set io_map_base for several PCI bridges lacking it + +Several MIPS platforms don't set pci_controller::io_map_base for their +PCI bridges. This results in a panic in pci_iomap(). (The panic is +conditional on CONFIG_PCI_DOMAINS, but that is now enabled for all PCI +MIPS systems.) + +I have tested the change to Malta in qemu; the other platforms not at +all. +--- + arch/mips/mti-malta/malta-pci.c | 2 ++ + arch/mips/nxp/pnx8550/common/pci.c | 1 + + arch/mips/nxp/pnx8550/common/setup.c | 2 +- + arch/mips/pci/ops-pmcmsp.c | 1 + + arch/mips/pci/pci-yosemite.c | 1 + + 5 files changed, 6 insertions(+), 1 deletions(-) + +diff --git a/arch/mips/mti-malta/malta-pci.c b/arch/mips/mti-malta/malta-pci.c +index 2fbfa1a..bf80921 100644 +--- a/arch/mips/mti-malta/malta-pci.c ++++ b/arch/mips/mti-malta/malta-pci.c +@@ -247,6 +247,8 @@ void __init mips_pcibios_init(void) + iomem_resource.end &= 0xfffffffffULL; /* 64 GB */ + ioport_resource.end = controller->io_resource->end; + ++ controller->io_map_base = mips_io_port_base; ++ + register_pci_controller(controller); + } + +diff --git a/arch/mips/nxp/pnx8550/common/pci.c b/arch/mips/nxp/pnx8550/common/pci.c +index eee4f3d..98e86dd 100644 +--- a/arch/mips/nxp/pnx8550/common/pci.c ++++ b/arch/mips/nxp/pnx8550/common/pci.c +@@ -44,6 +44,7 @@ extern struct pci_ops pnx8550_pci_ops; + + static struct pci_controller pnx8550_controller = { + .pci_ops = &pnx8550_pci_ops, ++ .io_map_base = PNX8550_PORT_BASE, + .io_resource = &pci_io_resource, + .mem_resource = &pci_mem_resource, + }; +diff --git a/arch/mips/nxp/pnx8550/common/setup.c b/arch/mips/nxp/pnx8550/common/setup.c +index 2aed50f..64246c9 100644 +--- a/arch/mips/nxp/pnx8550/common/setup.c ++++ b/arch/mips/nxp/pnx8550/common/setup.c +@@ -113,7 +113,7 @@ void __init plat_mem_setup(void) + PNX8550_GLB2_ENAB_INTA_O = 0; + + /* IO/MEM resources. */ +- set_io_port_base(KSEG1); ++ set_io_port_base(PNX8550_PORT_BASE); + ioport_resource.start = 0; + ioport_resource.end = ~0; + iomem_resource.start = 0; +diff --git a/arch/mips/pci/ops-pmcmsp.c b/arch/mips/pci/ops-pmcmsp.c +index 04b3147..b7c03d8 100644 +--- a/arch/mips/pci/ops-pmcmsp.c ++++ b/arch/mips/pci/ops-pmcmsp.c +@@ -944,6 +944,7 @@ static struct pci_controller msp_pci_controller = { + .pci_ops = &msp_pci_ops, + .mem_resource = &pci_mem_resource, + .mem_offset = 0, ++ .io_map_base = MSP_PCI_IOSPACE_BASE, + .io_resource = &pci_io_resource, + .io_offset = 0 + }; +diff --git a/arch/mips/pci/pci-yosemite.c b/arch/mips/pci/pci-yosemite.c +index 0357946..cf5e1a2 100644 +--- a/arch/mips/pci/pci-yosemite.c ++++ b/arch/mips/pci/pci-yosemite.c +@@ -54,6 +54,7 @@ static int __init pmc_yosemite_setup(void) + panic(ioremap_failed); + + set_io_port_base(io_v_base); ++ py_controller.io_map_base = io_v_base; + TITAN_WRITE(RM9000x2_OCD_LKM7, TITAN_READ(RM9000x2_OCD_LKM7) | 1); + + ioport_resource.end = TITAN_IO_SIZE - 1; +-- +1.7.1 + diff --git a/debian/patches/series/1~experimental.3 b/debian/patches/series/1~experimental.3 index ed01602bc..5c3e0c38e 100644 --- a/debian/patches/series/1~experimental.3 +++ b/debian/patches/series/1~experimental.3 @@ -1 +1,2 @@ + bugfix/all/ipr-add-writeq-definition-if-needed.patch ++ bugfix/mips/mips-Set-io_map_base-for-several-PCI-bridges-lacking.patch