Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 147932
b: refs/heads/master
c: ab8e2eb
h: refs/heads/master
v: v3
  • Loading branch information
Rusty Russell committed Jun 12, 2009
1 parent 98c9307 commit f317215
Show file tree
Hide file tree
Showing 52 changed files with 580 additions and 453 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d614aec4752f8c61b2e7cb77806b6bd59aa50836
refs/heads/master: ab8e2eb722f1e5fcbd8181e3e9ef4e95c52124df
2 changes: 0 additions & 2 deletions trunk/Documentation/ide/ide.txt
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,6 @@ Other kernel parameters for ide_core are:

* "noflush=[interface_number.device_number]" to disable flush requests

* "nohpa=[interface_number.device_number]" to disable Host Protected Area

* "noprobe=[interface_number.device_number]" to skip probing

* "nowerr=[interface_number.device_number]" to ignore the WRERR_STAT bit
Expand Down
7 changes: 5 additions & 2 deletions trunk/Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -887,8 +887,11 @@ and is between 256 and 4096 characters. It is defined in the file

ide-core.nodma= [HW] (E)IDE subsystem
Format: =0.0 to prevent dma on hda, =0.1 hdb =1.0 hdc
.vlb_clock .pci_clock .noflush .nohpa .noprobe .nowerr
.cdrom .chs .ignore_cable are additional options
.vlb_clock .pci_clock .noflush .noprobe .nowerr .cdrom
.chs .ignore_cable are additional options
See Documentation/ide/ide.txt.

idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed
See Documentation/ide/ide.txt.

ide-pci-generic.all-generic-ide [HW] (E)IDE subsystem
Expand Down
15 changes: 12 additions & 3 deletions trunk/arch/x86/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,13 +301,15 @@ static void __init reserve_brk(void)

#ifdef CONFIG_BLK_DEV_INITRD

#ifdef CONFIG_X86_32

#define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT)
static void __init relocate_initrd(void)
{

u64 ramdisk_image = boot_params.hdr.ramdisk_image;
u64 ramdisk_size = boot_params.hdr.ramdisk_size;
u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
u64 ramdisk_here;
unsigned long slop, clen, mapaddr;
char *p, *q;
Expand Down Expand Up @@ -363,13 +365,14 @@ static void __init relocate_initrd(void)
ramdisk_image, ramdisk_image + ramdisk_size - 1,
ramdisk_here, ramdisk_here + ramdisk_size - 1);
}
#endif

static void __init reserve_initrd(void)
{
u64 ramdisk_image = boot_params.hdr.ramdisk_image;
u64 ramdisk_size = boot_params.hdr.ramdisk_size;
u64 ramdisk_end = ramdisk_image + ramdisk_size;
u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;

if (!boot_params.hdr.type_of_loader ||
!ramdisk_image || !ramdisk_size)
Expand Down Expand Up @@ -399,8 +402,14 @@ static void __init reserve_initrd(void)
return;
}

#ifdef CONFIG_X86_32
relocate_initrd();

#else
printk(KERN_ERR "initrd extends beyond end of memory "
"(0x%08llx > 0x%08llx)\ndisabling initrd\n",
ramdisk_end, end_of_lowmem);
initrd_start = 0;
#endif
free_early(ramdisk_image, ramdisk_end);
}
#else
Expand Down
2 changes: 0 additions & 2 deletions trunk/arch/x86/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,6 @@ SECTIONS
/* Data */
. = ALIGN(PAGE_SIZE);
.data : AT(ADDR(.data) - LOAD_OFFSET) {
/* Start of data section */
_sdata = .;
DATA_DATA
CONSTRUCTORS

Expand Down
7 changes: 4 additions & 3 deletions trunk/drivers/ide/at91_ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@ static const struct ide_port_info at91_ide_port_info __initdata = {
.host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE |
IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS,
.pio_mask = ATA_PIO6,
.chipset = ide_generic,
};

/*
Expand Down Expand Up @@ -247,7 +246,8 @@ irqreturn_t at91_irq_handler(int irq, void *dev_id)
static int __init at91_ide_probe(struct platform_device *pdev)
{
int ret;
struct ide_hw hw, *hws[] = { &hw };
hw_regs_t hw;
hw_regs_t *hws[] = { &hw, NULL, NULL, NULL };
struct ide_host *host;
struct resource *res;
unsigned long tf_base = 0, ctl_base = 0;
Expand Down Expand Up @@ -304,9 +304,10 @@ static int __init at91_ide_probe(struct platform_device *pdev)
ide_std_init_ports(&hw, tf_base, ctl_base + 6);

hw.irq = board->irq_pin;
hw.chipset = ide_generic;
hw.dev = &pdev->dev;

host = ide_host_alloc(&at91_ide_port_info, hws, 1);
host = ide_host_alloc(&at91_ide_port_info, hws);
if (!host) {
perr("failed to allocate ide host\n");
return -ENOMEM;
Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/ide/au1xxx-ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ static int auide_ddma_init(ide_hwif_t *hwif, const struct ide_port_info *d)
}
#endif

static void auide_setup_ports(struct ide_hw *hw, _auide_hwif *ahwif)
static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif)
{
int i;
unsigned long *ata_regs = hw->io_ports_array;
Expand Down Expand Up @@ -499,7 +499,6 @@ static const struct ide_port_info au1xxx_port_info = {
#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
.mwdma_mask = ATA_MWDMA2,
#endif
.chipset = ide_au1xxx,
};

static int au_ide_probe(struct platform_device *dev)
Expand All @@ -508,7 +507,7 @@ static int au_ide_probe(struct platform_device *dev)
struct resource *res;
struct ide_host *host;
int ret = 0;
struct ide_hw hw, *hws[] = { &hw };
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };

#if defined(CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA)
char *mode = "MWDMA2";
Expand Down Expand Up @@ -549,8 +548,9 @@ static int au_ide_probe(struct platform_device *dev)
auide_setup_ports(&hw, ahwif);
hw.irq = ahwif->irq;
hw.dev = &dev->dev;
hw.chipset = ide_au1xxx;

ret = ide_host_add(&au1xxx_port_info, hws, 1, &host);
ret = ide_host_add(&au1xxx_port_info, hws, &host);
if (ret)
goto out;

Expand Down
9 changes: 5 additions & 4 deletions trunk/drivers/ide/buddha.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ static int xsurf_ack_intr(ide_hwif_t *hwif)
return 1;
}

static void __init buddha_setup_ports(struct ide_hw *hw, unsigned long base,
static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base,
unsigned long ctl, unsigned long irq_port,
ide_ack_intr_t *ack_intr)
{
Expand All @@ -139,12 +139,13 @@ static void __init buddha_setup_ports(struct ide_hw *hw, unsigned long base,

hw->irq = IRQ_AMIGA_PORTS;
hw->ack_intr = ack_intr;

hw->chipset = ide_generic;
}

static const struct ide_port_info buddha_port_info = {
.host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA,
.irq_flags = IRQF_SHARED,
.chipset = ide_generic,
};

/*
Expand All @@ -160,7 +161,7 @@ static int __init buddha_init(void)

while ((z = zorro_find_device(ZORRO_WILDCARD, z))) {
unsigned long board;
struct ide_hw hw[MAX_NUM_HWIFS], *hws[MAX_NUM_HWIFS];
hw_regs_t hw[MAX_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL };

if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) {
buddha_num_hwifs = BUDDHA_NUM_HWIFS;
Expand Down Expand Up @@ -224,7 +225,7 @@ static int __init buddha_init(void)
hws[i] = &hw[i];
}

ide_host_add(&buddha_port_info, hws, i, NULL);
ide_host_add(&buddha_port_info, hws, NULL);
}

return 0;
Expand Down
7 changes: 4 additions & 3 deletions trunk/drivers/ide/cmd640.c
Original file line number Diff line number Diff line change
Expand Up @@ -708,7 +708,7 @@ static int __init cmd640x_init(void)
int second_port_cmd640 = 0, rc;
const char *bus_type, *port2;
u8 b, cfr;
struct ide_hw hw[2], *hws[2];
hw_regs_t hw[2], *hws[] = { NULL, NULL, NULL, NULL };

if (cmd640_vlb && probe_for_cmd640_vlb()) {
bus_type = "VLB";
Expand Down Expand Up @@ -762,9 +762,11 @@ static int __init cmd640x_init(void)

ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14;
hw[0].chipset = ide_cmd640;

ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15;
hw[1].chipset = ide_cmd640;

printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x"
"\n", 'a' + cmd640_chip_version - 1, bus_type, cfr);
Expand Down Expand Up @@ -822,8 +824,7 @@ static int __init cmd640x_init(void)
cmd640_dump_regs();
#endif

return ide_host_add(&cmd640_port_info, hws, second_port_cmd640 ? 2 : 1,
NULL);
return ide_host_add(&cmd640_port_info, hws, NULL);
}

module_param_named(probe_vlb, cmd640_vlb, bool, 0);
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/ide/cs5520.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ static const struct ide_port_info cyrix_chipset __devinitdata = {
static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{
const struct ide_port_info *d = &cyrix_chipset;
struct ide_hw hw[2], *hws[] = { NULL, NULL };
hw_regs_t hw[4], *hws[] = { NULL, NULL, NULL, NULL };

ide_setup_pci_noise(dev, d);

Expand All @@ -136,7 +136,7 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic
ide_pci_setup_ports(dev, d, &hw[0], &hws[0]);
hw[0].irq = 14;

return ide_host_add(d, hws, 2, NULL);
return ide_host_add(d, hws, NULL);
}

static const struct pci_device_id cs5520_pci_tbl[] = {
Expand Down
6 changes: 3 additions & 3 deletions trunk/drivers/ide/delkin_cb.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ static const struct ide_port_info delkin_cb_port_info = {
IDE_HFLAG_NO_DMA,
.irq_flags = IRQF_SHARED,
.init_chipset = delkin_cb_init_chipset,
.chipset = ide_pci,
};

static int __devinit
Expand All @@ -77,7 +76,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
struct ide_host *host;
unsigned long base;
int rc;
struct ide_hw hw, *hws[] = { &hw };
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };

rc = pci_enable_device(dev);
if (rc) {
Expand All @@ -98,8 +97,9 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
ide_std_init_ports(&hw, base + 0x10, base + 0x1e);
hw.irq = dev->irq;
hw.dev = &dev->dev;
hw.chipset = ide_pci; /* this enables IRQ sharing */

rc = ide_host_add(&delkin_cb_port_info, hws, 1, &host);
rc = ide_host_add(&delkin_cb_port_info, hws, &host);
if (rc)
goto out_disable;

Expand Down
9 changes: 5 additions & 4 deletions trunk/drivers/ide/falconide.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,9 @@ static const struct ide_port_info falconide_port_info = {
.host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_SERIALIZE |
IDE_HFLAG_NO_DMA,
.irq_flags = IRQF_SHARED,
.chipset = ide_generic,
};

static void __init falconide_setup_ports(struct ide_hw *hw)
static void __init falconide_setup_ports(hw_regs_t *hw)
{
int i;

Expand All @@ -129,6 +128,8 @@ static void __init falconide_setup_ports(struct ide_hw *hw)

hw->irq = IRQ_MFP_IDE;
hw->ack_intr = NULL;

hw->chipset = ide_generic;
}

/*
Expand All @@ -138,7 +139,7 @@ static void __init falconide_setup_ports(struct ide_hw *hw)
static int __init falconide_init(void)
{
struct ide_host *host;
struct ide_hw hw, *hws[] = { &hw };
hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL };
int rc;

if (!MACH_IS_ATARI || !ATARIHW_PRESENT(IDE))
Expand All @@ -153,7 +154,7 @@ static int __init falconide_init(void)

falconide_setup_ports(&hw);

host = ide_host_alloc(&falconide_port_info, hws, 1);
host = ide_host_alloc(&falconide_port_info, hws);
if (host == NULL) {
rc = -ENOMEM;
goto err;
Expand Down
9 changes: 5 additions & 4 deletions trunk/drivers/ide/gayle.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ static int gayle_ack_intr_a1200(ide_hwif_t *hwif)
return 1;
}

static void __init gayle_setup_ports(struct ide_hw *hw, unsigned long base,
static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base,
unsigned long ctl, unsigned long irq_port,
ide_ack_intr_t *ack_intr)
{
Expand All @@ -106,13 +106,14 @@ static void __init gayle_setup_ports(struct ide_hw *hw, unsigned long base,

hw->irq = IRQ_AMIGA_PORTS;
hw->ack_intr = ack_intr;

hw->chipset = ide_generic;
}

static const struct ide_port_info gayle_port_info = {
.host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_SERIALIZE |
IDE_HFLAG_NO_DMA,
.irq_flags = IRQF_SHARED,
.chipset = ide_generic,
};

/*
Expand All @@ -125,7 +126,7 @@ static int __init gayle_init(void)
unsigned long base, ctrlport, irqport;
ide_ack_intr_t *ack_intr;
int a4000, i, rc;
struct ide_hw hw[GAYLE_NUM_HWIFS], *hws[GAYLE_NUM_HWIFS];
hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL };

if (!MACH_IS_AMIGA)
return -ENODEV;
Expand Down Expand Up @@ -170,7 +171,7 @@ static int __init gayle_init(void)
hws[i] = &hw[i];
}

rc = ide_host_add(&gayle_port_info, hws, i, NULL);
rc = ide_host_add(&gayle_port_info, hws, NULL);
if (rc)
release_mem_region(res_start, res_n);

Expand Down
Loading

0 comments on commit f317215

Please sign in to comment.