lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 28 Jan 2017 23:11:21 +0100
From:   Ingo Molnar <mingo@...nel.org>
To:     linux-kernel@...r.kernel.org
Cc:     Andrew Morton <akpm@...ux-foundation.org>,
        Andy Lutomirski <luto@...capital.net>,
        Borislav Petkov <bp@...en8.de>,
        "H . Peter Anvin" <hpa@...or.com>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Peter Zijlstra <peterz@...radead.org>,
        Thomas Gleixner <tglx@...utronix.de>,
        Yinghai Lu <yinghai@...nel.org>
Subject: [PATCH 00/50] x86: Clean up and reorganize the E820 table handling code

When reviewing an E820 patch two days ago I noticed that our E820 code
in arch/x86/kernel/e820.c has bitrotten quite a bit, and started
cleaning it up a bit.

Didn't suspect that I'd end up with 50 patches, but oh well ...

The code got the usual treatments to turn it into a modern, cleanly
structured kernel facility:

 - split the e820.h header split into asm/e820/types.h and asm/e820/api.h
   and moved most of it out of the UAPI export,

 - eliminated a number of header dependency hell related
   to the E820 code,

 - clarified and standardized the API names, the variable names, the
   overall code style and the comments,

 - cleaned up and modernized the various basic types used,

 - fixed a ton of comments and weird constructs and added comments
   where they were missing.

There's a lot more: see the individual patches for details. There's no
big functional changes, but the overall diffstat is pretty significant,
due to cleaning out of 10+ years of gradually accumulated cruft.

It should now be possible for someone to understand the code from first
principles, without too much hassle.

The patches can also be accessed in the following Git tree:

   git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git WIP.x86/boot

The code has been through a fair amount of testing, but only on a limited
number of test systems.

Ingo Molnar (50):
  x86/boot/e820: Introduce arch/x86/include/asm/e820/types.h
  x86/boot/e820: Clean up and improve comments in asm/e820/types.h
  x86/boot/e820: Move asm/e820.h to asm/e820/api.h
  x86/boot/e820: Split minimal UAPI types out into uapi/asm/e820/types.h
  x86/boot/e820: Clean up the E820_X_MAX definition
  x86/boot/e820: Remove spurious asm/e820/api.h inclusions
  x86/boot/e820: Remove assembly guard from asm/e820/types.h
  x86/boot/e820: Clean up asm/e820/api.h
  x86/boot/e820: Remove unnecessary __ASSEMBLY__ guard
  x86/boot/e820: Move HIGH_MEMORY define to asm/e820/types.h
  x86/boot/e820: Rename the basic e820 data types to 'struct e820_entry' and 'struct e820_array'
  x86/boot/e820: Remove unnecessary #include <linux/ioport.h> from asm/e820/api.h
  x86/boot/e820: Remove e820_mark_nosave_regions() definition uglies
  x86/boot/e820: Rename 'e820_map' variables to 'e820_array'
  x86/boot/e820: Rename everything to e820_table
  x86/boot/e820: Harmonize the 'struct e820_table' fields
  x86/boot/e820: Rename default_machine_specific_memory_setup() to e820__memory_setup_default()
  x86/boot/e820: Rename e820_table_saved to e820_table_firmware and improve the description
  x86/boot/e820: Basic cleanup of e820.c
  x86/boot/e820: Rename memblock_x86_fill() to e820__memblock_setup() and improve the explanations
  x86/boot/e820: Consolidate 'struct e820_entry *entry' local variable names
  x86/boot/e820: Convert printk(KERN_* ...) to pr_*()
  x86/boot/e820: Move the memblock_find_dma_reserve() function and rename it to memblock_set_dma_reserve()
  x86/boot/e820: Rename parse_e820_ext() to e820__memory_setup_extended()
  x86/boot/e820: Move e820_reserve_setup_data() to e820.c
  x86/boot/e820: Clarify the role of finish_e820_parsing() and rename it to e820__finish_early_params()
  x86/boot/e820: Rename early_reserve_e820() to e820__memblock_alloc() and document it
  x86/boot/e820: Rename update_e820() to e820__update_table()
  x86/boot/e820: Rename sanitize_e820_table() to e820__update_table()
  x86/boot/e820: Rename e820_any_mapped()/e820_all_mapped() to e820__mapped_any()/e820__mapped_all()
  x86/boot/e820: Rename e820_setup_gap() to e820__setup_pci_gap()
  x86/boot/e820: Create coherent API function names for E820 range operations
  x86/boot/e820: Rename e820_print_map() to e820__print_table()
  x86/boot/e820: Reorder the function prototypes in api.h
  x86/boot/e820: Simplify e820_reserve_resources()
  x86/boot/e820: Introduce 'enum e820_type'
  x86/boot/e820: Use 'enum e820_type' in 'struct e820_entry'
  x86/boot/e820: Use 'enum e820_type' when handling the e820 region type
  x86/boot/e820: Prefix the E820_* type names with "E820_TYPE_"
  x86/boot/e820: Clean up the E820 table size define names
  x86/boot/e820: Clean up and standardize sizeof() uses
  xen, x86/boot/e820: Simplify Xen's xen_e820_table construct
  x86/boot/e820: Simplify the e820__update_table() interface
  x86/boot/e820: Clean up __e820__update_table() et al
  x86/boot/e820: Document e820__reserve_setup_data()
  x86/boot/e820: Use bool in query APIs
  x86/boot/e820: Rename e820_reserve_resources*() to e820__reserve_resources*()
  x86/boot/e820: Rename e820_mark_nosave_regions() to e820__register_nosave_regions()
  x86/boot/e820: Remove unnecessary #include's
  x86/boot/e820: Rename the remaining E820 APIs to the e820__*() prefix

 Documentation/x86/zero-page.txt        |    6 +-
 arch/x86/boot/compressed/eboot.c       |   44 +--
 arch/x86/boot/compressed/kaslr.c       |    6 +-
 arch/x86/boot/header.S                 |    1 -
 arch/x86/boot/memory.c                 |    6 +-
 arch/x86/include/asm/acpi.h            |    2 +
 arch/x86/include/asm/e820.h            |   73 ----
 arch/x86/include/asm/e820/api.h        |   50 +++
 arch/x86/include/asm/e820/types.h      |   58 +++
 arch/x86/include/asm/gart.h            |    4 +-
 arch/x86/include/asm/mpspec.h          |    4 +-
 arch/x86/include/asm/pci_x86.h         |    2 +
 arch/x86/include/asm/pgtable.h         |    3 +-
 arch/x86/include/uapi/asm/bootparam.h  |    4 +-
 arch/x86/include/uapi/asm/e820/types.h |   55 +++
 arch/x86/kernel/acpi/boot.c            |    5 +-
 arch/x86/kernel/aperture_64.c          |   10 +-
 arch/x86/kernel/apic/apic.c            |    2 +-
 arch/x86/kernel/apic/apic_noop.c       |    2 +-
 arch/x86/kernel/apic/probe_32.c        |    2 +-
 arch/x86/kernel/apic/x2apic_uv_x.c     |    1 +
 arch/x86/kernel/cpu/centaur.c          |    2 +-
 arch/x86/kernel/cpu/mtrr/cleanup.c     |    6 +-
 arch/x86/kernel/cpu/mtrr/main.c        |    2 +-
 arch/x86/kernel/crash.c                |   23 +-
 arch/x86/kernel/e820.c                 | 1032 ++++++++++++++++++++++++++--------------------------
 arch/x86/kernel/early-quirks.c         |    4 +-
 arch/x86/kernel/head32.c               |    2 +-
 arch/x86/kernel/head64.c               |    2 +-
 arch/x86/kernel/kexec-bzimage64.c      |   18 +-
 arch/x86/kernel/mpparse.c              |    6 +-
 arch/x86/kernel/probe_roms.c           |    2 +-
 arch/x86/kernel/resource.c             |    8 +-
 arch/x86/kernel/setup.c                |   78 ++--
 arch/x86/kernel/tboot.c                |   16 +-
 arch/x86/kernel/x86_init.c             |    4 +-
 arch/x86/lguest/boot.c                 |    8 +-
 arch/x86/lib/kaslr.c                   |    2 +-
 arch/x86/mm/amdtopology.c              |    2 +-
 arch/x86/mm/init.c                     |   59 ++-
 arch/x86/mm/init_32.c                  |    2 +-
 arch/x86/mm/init_64.c                  |   26 +-
 arch/x86/mm/ioremap.c                  |    3 +-
 arch/x86/mm/kasan_init_64.c            |    5 +-
 arch/x86/mm/mmio-mod.c                 |    2 +-
 arch/x86/mm/numa.c                     |    2 +-
 arch/x86/mm/pageattr.c                 |    2 +-
 arch/x86/mm/pat.c                      |    3 +-
 arch/x86/mm/pgtable_32.c               |    2 +-
 arch/x86/mm/srat.c                     |    2 +-
 arch/x86/pci/i386.c                    |    4 +-
 arch/x86/pci/mmconfig-shared.c         |   22 +-
 arch/x86/pci/mmconfig_32.c             |    2 +-
 arch/x86/pci/mmconfig_64.c             |    2 +-
 arch/x86/pci/pcbios.c                  |    2 +
 arch/x86/platform/efi/efi.c            |   19 +-
 arch/x86/platform/efi/efi_64.c         |    2 +-
 arch/x86/platform/efi/quirks.c         |    8 +-
 arch/x86/power/hibernate_64.c          |   16 +-
 arch/x86/xen/mmu.c                     |    2 +-
 arch/x86/xen/setup.c                   |   97 +++--
 drivers/acpi/tables.c                  |    2 +-
 drivers/char/agp/amd64-agp.c           |    2 +-
 include/xen/page.h                     |    2 +-
 tools/lguest/lguest.c                  |    2 +-
 65 files changed, 989 insertions(+), 860 deletions(-)
 delete mode 100644 arch/x86/include/asm/e820.h
 create mode 100644 arch/x86/include/asm/e820/api.h
 create mode 100644 arch/x86/include/asm/e820/types.h
 create mode 100644 arch/x86/include/uapi/asm/e820/types.h

-- 
2.7.4

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ