24 Jan, 2008

1 commit

  • Using 64k pages on 64-bit PowerPC systems makes life difficult for
    emulators that are trying to emulate an ISA, such as x86, which use a
    smaller page size, since the emulator can no longer use the MMU and
    the normal system calls for controlling page protections. Of course,
    the emulator can emulate the MMU by checking and possibly remapping
    the address for each memory access in software, but that is pretty
    slow.

    This provides a facility for such programs to control the access
    permissions on individual 4k sub-pages of 64k pages. The idea is
    that the emulator supplies an array of protection masks to apply to a
    specified range of virtual addresses. These masks are applied at the
    level where hardware PTEs are inserted into the hardware page table
    based on the Linux PTEs, so the Linux PTEs are not affected. Note
    that this new mechanism does not allow any access that would otherwise
    be prohibited; it can only prohibit accesses that would otherwise be
    allowed. This new facility is only available on 64-bit PowerPC and
    only when the kernel is configured for 64k pages.

    The masks are supplied using a new subpage_prot system call, which
    takes a starting virtual address and length, and a pointer to an array
    of protection masks in memory. The array has a 32-bit word per 64k
    page to be protected; each 32-bit word consists of 16 2-bit fields,
    for which 0 allows any access (that is otherwise allowed), 1 prevents
    write accesses, and 2 or 3 prevent any access.

    Implicit in this is that the regions of the address space that are
    protected are switched to use 4k hardware pages rather than 64k
    hardware pages (on machines with hardware 64k page support). In fact
    the whole process is switched to use 4k hardware pages when the
    subpage_prot system call is used, but this could be improved in future
    to switch only the affected segments.

    The subpage protection bits are stored in a 3 level tree akin to the
    page table tree. The top level of this tree is stored in a structure
    that is appended to the top level of the page table tree, i.e., the
    pgd array. Since it will often only be 32-bit addresses (below 4GB)
    that are protected, the pointers to the first four bottom level pages
    are also stored in this structure (each bottom level page contains the
    protection bits for 1GB of address space), so the protection bits for
    addresses below 4GB can be accessed with one fewer loads than those
    for higher addresses.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     

22 Jan, 2008

3 commits


19 Jan, 2008

7 commits


17 Jan, 2008

23 commits

  • Paul Mackerras
     
  • Signed-off-by: Jon Loeliger
    Signed-off-by: Paul Mackerras

    Jon Loeliger
     
  • Also check that __NR_syscalls has been updated appropriately.

    Hopefully this will catch any out of order additions to the
    table in the future.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • This adds the hugepagesz boot-time parameter for ppc64. It lets one
    pick the size for huge pages. The choices available are 64K and 16M
    when the base page size is 4k. It defaults to 16M (previously the
    only only choice) if nothing or an invalid choice is specified.

    Tested 64K huge pages successfully with the libhugetlbfs 1.2.

    Signed-off-by: Jon Tollefson
    Signed-off-by: Paul Mackerras

    Jon Tollefson
     
  • Fix error in booting-without-of.txt that indicates that a node can inherit
    its #address-cells and #size-cells definitions from its parent's parent.
    This is not correct.

    Signed-off-by: Mark A. Greer
    Signed-off-by: Paul Mackerras

    Mark A. Greer
     
  • We don't care if the device_create_file calls fail, the driver will work
    just as well without them, so just issue a runtime warning.

    drivers/macintosh/therm_adt746x.c: In function 'thermostat_init':
    drivers/macintosh/therm_adt746x.c:615: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:616: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:617: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:618: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:619: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:620: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:621: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:622: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:623: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_adt746x.c:625: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • We don't care if the device_create_file calls fail, the driver will work
    just as well without them, so just issue a runtime warning.

    drivers/macintosh/therm_windtunnel.c: In function 'setup_hardware':
    drivers/macintosh/therm_windtunnel.c:268: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_windtunnel.c:269: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Signed-off-by: Grant Likely
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Grant Likely
     
  • Signed-off-by: Grant Likely
    Signed-off-by: Paul Mackerras

    Grant Likely
     
  • We don't really care if any of these calls to device_create_file fails,
    so just issue warnings in that case.

    drivers/macintosh/therm_pm72.c: In function 'init_cpu_state':
    drivers/macintosh/therm_pm72.c:1185: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1186: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1187: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1188: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1189: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1191: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1192: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1193: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1194: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1195: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c: In function 'init_backside_state':
    drivers/macintosh/therm_pm72.c:1383: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1384: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c: In function 'init_drives_state':
    drivers/macintosh/therm_pm72.c:1503: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1504: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c: In function 'init_dimms_state':
    drivers/macintosh/therm_pm72.c:1625: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c: In function 'init_slots_state':
    drivers/macintosh/therm_pm72.c:1743: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result
    drivers/macintosh/therm_pm72.c:1744: warning: ignoring return value of 'device_create_file', declared with attribute warn_unused_result

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Update .gitignore as needed by dtc addition.

    Signed-off-by: Jochen Friedrich
    Acked-by: David Gibson
    Signed-off-by: Paul Mackerras

    Jochen Friedrich
     
  • Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • xlate_iomm_address() really wants the ds_addr to pass to the HV, so store
    that value (instead of the BAR number) when we allocate the device bars.
    This is not a fast path, so we can look up the device_node property
    there instead of using the bussubno field of the pci_dn.

    The other user of iseries_ds_addr() was already scanning the device tree,
    so looking up a property will not slow it down any more.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • ... so move it into the #ifdef CONFIG_EEH section.

    Signed-off-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Stephen Rothwell
     
  • Fix documentation once and for ever, because I'm pretty tired of
    repeating that I am merely following it. ;-)

    http://ozlabs.org/pipermail/linuxppc-dev/2007-December/048096.html

    http://ozlabs.org/pipermail/linuxppc-dev/2007-November/046977.html
    http://ozlabs.org/pipermail/linuxppc-dev/2007-November/046979.html

    http://ozlabs.org/pipermail/linuxppc-dev/2007-October/044411.html
    http://ozlabs.org/pipermail/linuxppc-dev/2007-October/044413.html

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Paul Mackerras

    Anton Vorontsov
     
  • Signed-off-by: Cyrill Gorcunov
    Signed-off-by: Paul Mackerras

    Cyrill Gorcunov
     
  • Signed-off-by: Cyrill Gorcunov
    Signed-off-by: Paul Mackerras

    Cyrill Gorcunov
     
  • Signed-off-by: Cyrill Gorcunov
    Signed-off-by: Paul Mackerras

    Cyrill Gorcunov
     
  • Similar to of_find_compatible_node(), of_find_matching_node() and
    for_each_matching_node() allow you to iterate over the device tree
    looking for specific nodes, except that they take of_device_id
    tables instead of strings.

    This also moves of_match_node() from driver/of/device.c to
    driver/of/base.c to colocate it with the of_find_matching_node which
    depends on it.

    Signed-off-by: Grant Likely
    Signed-off-by: Paul Mackerras

    Grant Likely
     
  • Fixes sparse warning: constant 0xffffffffffffff80 is so big it is
    unsigned long

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Paul Mackerras

    Geert Uytterhoeven
     

16 Jan, 2008

3 commits


11 Jan, 2008

1 commit


09 Jan, 2008

2 commits