02 Dec, 2006

1 commit

  • First phase in introducing ACPI support to SN.
    In this phase, when running with an ACPI capable PROM,
    the DSDT will define the root busses and all SN nodes
    (SGIHUB, SGITIO). An ACPI bus driver will be registered
    for the node devices, with the acpi_pci_root_driver being
    used for the root busses. An ACPI vendor descriptor is
    now used to pass platform specific information for both
    nodes and busses, eliminating the need for the current
    SAL calls. Also, with ACPI support, SN fixup code is no longer
    needed to initiate the PCI bus scans, as the acpi_pci_root_driver
    does that.

    However, to maintain backward compatibility with non-ACPI capable
    PROMs, none of the current 'fixup' code can been deleted, though
    much restructuring has been done. For example, the bulk of the code
    in io_common.c is relocated code that is now common regardless
    of what PROM is running, while io_acpi_init.c and io_init.c contain
    routines specific to an ACPI or non ACPI capable PROM respectively.

    A new pci bus fixup platform vector has been created to provide
    a hook for invoking platform specific bus fixup from pcibios_fixup_bus().

    The size of io_space[] has been increased to support systems with
    large IO configurations.

    Signed-off-by: John Keller
    Signed-off-by: Greg Kroah-Hartman

    John Keller
     

18 Oct, 2006

1 commit

  • I noticed these are declared extern outside of __KERNEL__, but surely
    they wouldn't be available to userland since they're defined in
    ioremap.c. Am I missing something here?

    If I'm right about this, then there's probably a good deal of other
    stuff in io.h that could move inside __KERNEL__, but at least this is
    a start.

    Signed-off-by: Aron Griffis
    Signed-off-by: Tony Luck

    Aron Griffis
     

11 Jul, 2006

1 commit

  • Newer ARMs have a 40 bit physical address space, but mapping physical
    memory above 4G needs a special page table format which we (currently?) do
    not use for userspace mappings, so what happens instead is that mapping an
    address >= 4G will happily discard the upper bits and wrap.

    There is a valid_mmap_phys_addr_range() arch hook where we could check for
    >= 4G addresses and deny the mapping, but this hook takes an unsigned long
    address:

    static inline int valid_mmap_phys_addr_range(unsigned long addr, size_t size);

    And drivers/char/mem.c:mmap_mem() calls it like this:

    static int mmap_mem(struct file * file, struct vm_area_struct * vma)
    {
    size_t size = vma->vm_end - vma->vm_start;

    if (!valid_mmap_phys_addr_range(vma->vm_pgoff << PAGE_SHIFT, size))

    So that's not much help either.

    This patch makes the hook take a pfn instead of a phys address.

    Signed-off-by: Lennert Buytenhek
    Cc: Bjorn Helgaas
    Cc: "Luck, Tony"
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lennert Buytenhek
     

09 May, 2006

1 commit

  • This closes a couple holes in our attribute aliasing avoidance scheme:

    - The current kernel fails mmaps of some /dev/mem MMIO regions because
    they don't appear in the EFI memory map. This keeps X from working
    on the Intel Tiger box.

    - The current kernel allows UC mmap of the 0-1MB region of
    /sys/.../legacy_mem even when the chipset doesn't support UC
    access. This causes an MCA when starting X on HP rx7620 and rx8620
    boxes in the default configuration.

    There's more detail in the Documentation/ia64/aliasing.txt file this
    adds, but the general idea is that if a region might be covered by
    a granule-sized kernel identity mapping, any access via /dev/mem or
    mmap must use the same attribute as the identity mapping.

    Otherwise, we fall back to using an attribute that is supported
    according to the EFI memory map, or to using UC if the EFI memory
    map doesn't mention the region.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Tony Luck

    Bjorn Helgaas
     

27 Mar, 2006

3 commits

  • Check the EFI memory map so we can use the correct memory attributes for
    ioremap(). Previously, we always used uncacheable access, which blows up on
    some machines for regular system memory.

    Signed-off-by: Bjorn Helgaas
    Cc: Matt Domsch
    Cc: "Tolentino, Matthew E"
    Cc: "Brown, Len"
    Cc: Andi Kleen
    Acked-by: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • Pass the size, not a pointer to the size, to efi_mem_attribute_range().

    This function validates memory regions for the /dev/mem read/write/mmap paths.
    The pointer allows arches to reduce the size of the range, but I think that's
    unnecessary complexity. Simplifying it will let me use
    efi_mem_attribute_range() to improve the ia64 ioremap() implementation.

    Signed-off-by: Bjorn Helgaas
    Cc: Matt Domsch
    Cc: "Tolentino, Matthew E"
    Cc: "Brown, Len"
    Cc: Andi Kleen
    Acked-by: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • Enable DMI table parsing on ia64.

    Andi Kleen has a patch in his x86_64 tree which enables the use of i386
    dmi_scan.c on x86_64. dmi_scan.c functions are being used by the
    drivers/char/ipmi/ipmi_si_intf.c driver for autodetecting the ports or
    memory spaces where the IPMI controllers may be found.

    This patch adds equivalent changes for ia64 as to what is in the x86_64
    tree. In addition, I reworked the DMI detection, such that on EFI-capable
    systems, it uses the efi.smbios pointer to find the table, rather than
    brute-force searching from 0xF0000. On non-EFI systems, it continues the
    brute-force search.

    My test system, an Intel S870BN4 'Tiger4', aka Dell PowerEdge 7250, with
    latest BIOS, does not list the IPMI controller in the ACPI namespace, nor
    does it have an ACPI SPMI table. Also note, currently shipping Dell x8xx
    EM64T servers don't have these either, so DMI is the only method for
    obtaining the address of the IPMI controller.

    Signed-off-by: Matt Domsch
    Acked-by: "Luck, Tony"
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Domsch
     

09 Jan, 2006

1 commit

  • Add a hook so architectures can validate /dev/mem mmap requests.

    This is analogous to validation we already perform in the read/write
    paths.

    The identity mapping scheme used on ia64 requires that each 16MB or
    64MB granule be accessed with exactly one attribute (write-back or
    uncacheable). This avoids "attribute aliasing", which can cause a
    machine check.

    Sample problem scenario:
    - Machine supports VGA, so it has uncacheable (UC) MMIO at 640K-768K
    - efi_memmap_init() discards any write-back (WB) memory in the first granule
    - Application (e.g., "hwinfo") mmaps /dev/mem, offset 0
    - hwinfo receives UC mapping (the default, since memmap says "no WB here")
    - Machine check abort (on chipsets that don't support UC access to WB
    memory, e.g., sx1000)

    In the scenario above, the only choices are
    - Use WB for hwinfo mmap. Can't do this because it causes attribute
    aliasing with the UC mapping for the VGA MMIO space.
    - Use UC for hwinfo mmap. Can't do this because the chipset may not
    support UC for that region.
    - Disallow the hwinfo mmap with -EINVAL. That's what this patch does.

    Signed-off-by: Bjorn Helgaas
    Cc: Hugh Dickins
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     

30 Aug, 2005

1 commit


25 Aug, 2005

2 commits

  • Currently, region numbers are defined in several files, with several
    names. For example, we have REGION_KERNEL in asm/page.h and
    RGN_KERNEL in pgtable.h

    We also have address definitions that should depend on the
    RGN_XXX macros, but are currently just long constants.

    The following patch reorganises all the definitions so that they have
    the same form (RGN_XXX), are in one place, and that addresses that
    depend on RGN_XXX are derived from them.

    (This is a necessary but not sufficient patch to allow UML-like
    operation on IA64).

    Thanks to David Mosberger for catching the change I missed in mmu_context.h.

    Signed-off-by: Peter Chubb
    Signed-off-by: Tony Luck

    Peter Chubb
     
  • Parenthesize "p" to avoid ambiguity. No callers have a problem today;
    this is just to clean up the bad form.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Tony Luck

    Bjorn Helgaas
     

19 Aug, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds