21 Dec, 2006

7 commits

  • if CONFIG_CALGARY_IOMMU is built into the kernel via
    CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT, or is enabled via the
    iommu=calgary boot option, then the detect_calgary() function runs to
    detect the presence of a Calgary IOMMU.

    detect_calgary() first searches the BIOS EBDA area for a "rio_table_hdr"
    BIOS table. It has this parsing algorithm for the EBDA:

    while (offset) {
    ...
    /* The next offset is stored in the 1st word. 0 means no more */
    offset = *((unsigned short *)(ptr + offset));
    }

    got that? Lets repeat it slowly: we've got a BIOS-supplied data
    structure, plus Linux kernel code that will only break out of an
    infinite parsing loop once the BIOS gives a zero offset. Ok?

    Translation: what an excellent opportunity for BIOS writers to lock up
    the Linux boot process in an utterly hard to debug place! Indeed the
    BIOS jumped on that opportunity on my box, which has the following EBDA
    chaining layout:

    384, 65282, 65535, 65535, 65535, 65535, 65535, 65535 ...

    see the pattern? So my, definitely non-Calgary system happily locks up
    in detect_calgary()!

    the patch below fixes the boot hang by trusting the BIOS-supplied data
    structure a bit less: the parser always has to make forward progress,
    and if it doesnt, we break out of the loop and i get the expected kernel
    message:

    Calgary: Unable to locate Rio Grande Table in EBDA - bailing!

    Signed-off-by: Ingo Molnar
    Acked-by: Muli Ben-Yehuda
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • one of my boxes didnt boot the 2.6.20-rc1-rt0 kernel rpm, it hung during
    early bootup. After an hour or two of happy debugging i narrowed it down
    to the CALGARY_IOMMU_ENABLED_BY_DEFAULT option, which was freshly added
    to 2.6.20 via the x86_64 tree and /enabled by default/.

    commit bff6547bb6a4e82c399d74e7fba78b12d2f162ed claims:

    [PATCH] Calgary: allow compiling Calgary in but not using it by default

    This patch makes it possible to compile Calgary in but not use it by
    default. In this mode, use 'iommu=calgary' to activate it.

    but the change does not actually practice it:

    config CALGARY_IOMMU_ENABLED_BY_DEFAULT
    bool "Should Calgary be enabled by default?"
    default y
    depends on CALGARY_IOMMU
    help
    Should Calgary be enabled by default? if you choose 'y', Calgary
    will be used (if it exists). If you choose 'n', Calgary will not be
    used even if it exists. If you choose 'n' and would like to use
    Calgary anyway, pass 'iommu=calgary' on the kernel command line.
    If unsure, say Y.

    it's both 'default y', and says "If unsure, say Y". Clearly not a typo.

    disabling this option makes my box boot again. The patch below fixes the
    Kconfig entry. Grumble.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (22 commits)
    acpiphp: Link-time error for PCI Hotplug
    shpchp: cleanup shpchp.h
    shpchp: remove shpchprm_get_physical_slot_number
    shpchp: cleanup struct controller
    shpchp: remove unnecessary struct php_ctlr
    PCI: ATI sb600 sata quirk
    PCI legacy resource fix
    PCI: don't export device IDs to userspace
    PCI: Be a bit defensive in quirk_nvidia_ck804() so we don't risk dereferencing a NULL pdev.
    PCI: Fix multiple problems with VIA hardware
    PCI: Only check the HT capability bits in mpic.c
    PCI: Use pci_find_ht_capability() in drivers/pci/quirks.c
    PCI: Add #defines for Hypertransport MSI fields
    PCI: Use pci_find_ht_capability() in drivers/pci/htirq.c
    PCI: Add pci_find_ht_capability() for finding Hypertransport capabilities
    PCI: Create __pci_bus_find_cap_start() from __pci_bus_find_cap()
    pci: Introduce pci_find_present
    PCI: pcieport-driver: remove invalid warning message
    rpaphp: compiler warning cleanup
    PCI quirks: remove redundant check
    ...

    Linus Torvalds
     
  • * 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc:
    [POWERPC] Fix register save area alignment for swapcontext syscall
    [POWERPC] Fix PCI device channel state initialization
    [POWERPC] Update MTD OF documentation
    [POWERPC] Probe Efika platform before CHRP.
    [POWERPC] Fix build of cell zImage.initrd
    [POWERPC] iSeries: fix CONFIG_VIOPATH dependency
    [POWERPC] iSeries: fix viocons init
    [POWERPC] iSeries: fix viocd init
    [POWERPC] iSeries: fix iseries_veth init
    [POWERPC] iSeries: fix viotape init
    [POWERPC] iSeries: fix viodasd init
    [POWERPC] Workaround oldworld OF bug with IRQs & P2P bridges
    [POWERPC] powerpc: add scanning of ebc bus to of_platform
    [POWERPC] spufs: fix assignment of node numbers
    [POWERPC] cell: Fix spufs with "new style" device-tree
    [POWERPC] cell: Enable spider workarounds on all PCI buses
    [POWERPC] cell: add forward struct declarations to spu.h
    [POWERPC] cell: update cell_defconfig

    Linus Torvalds
     
  • * 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (29 commits)
    [ARM] 4062/1: S3C24XX: Anubis and Osiris shuld have CONFIG_PM_SIMTEC
    [ARM] 4060/1: update several ARM defconfigs
    [ARM] 4061/1: xsc3: change of maintainer
    [ARM] 4059/1: VR1000: fix LED3's platform device number
    [ARM] 4022/1: iop13xx: generic irq fixups
    [ARM] 4015/1: s3c2410 cpu ifdefs
    [ARM] 4057/1: ixp23xx: unconditionally enable hardware coherency
    [ARM] 4056/1: iop13xx: fix resource.end off-by-one in flash setup
    [ARM] 4055/1: iop13xx: fix phys_io/io_pg_offst for iq81340mc/sc
    [ARM] 4054/1: ep93xx: add HWCAP_CRUNCH
    [ARM] 4052/1: S3C24XX: Fix PM in arch/arm/mach-s3c2410/Kconfig
    [ARM] Fix warnings from asm/system.h
    [ARM] 4051/1: S3C24XX: clean includes in S3C2440 and S3C2442 support
    [ARM] 4050/1: S3C24XX: remove old changelogs in arch/arm/mach-s3c2410
    [ARM] 4049/1: S3C24XX: fix sparse warning due to upf_t in regs-serial.h
    [ARM] 4048/1: S3C24XX: make s3c2410_pm_resume() static
    [ARM] 4046/1: S3C24XX: fix sparse errors arch/arm/mach-s3c2410
    [ARM] 4045/1: S3C24XX: remove old VA for non-shared areas
    [ARM] 4044/1: S3C24XX: fix sparse warnings in arch/arm/mach-s3c2410/s3c2442-clock.c
    [ARM] 4043/1: S3C24XX: fix sparse warnings in arch/arm/mach-s3c2410/s3c2440-clock.c
    ...

    Linus Torvalds
     
  • This patch is designed to fix:
    - Disk eating corruptor on KT7 after resume from RAM
    - VIA IRQ handling
    - VIA fixups for bus lockups after resume from RAM

    The core of this is to add a table of resume fixups run at resume time.
    We need to do this for a variety of boards and features, but particularly
    we need to do this to get various critical VIA fixups done on resume.

    The second part of the problem is to handle VIA IRQ number rules which
    are a bit odd and need special handling for PIC interrupts. Various
    patches broke various boxes and while this one may not be perfect
    (hopefully it is) it ensures the workaround is applied to the right
    devices only.

    From: Jean Delvare

    Now that PCI quirks are replayed on software resume, we can safely
    re-enable the Asus SMBus unhiding quirk even when software suspend support
    is enabled.

    [akpm@osdl.org: fix const warning]
    Signed-off-by: Alan Cox
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Alan Cox
     
  • Only compare the exact HT capability bits against HT_CAPTYPE_IRQ,
    this is a little paranoid, but doesn't hurt.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     

20 Dec, 2006

12 commits


19 Dec, 2006

5 commits


18 Dec, 2006

16 commits