NACK: [SRU][F/oracle][PULL] focal/linux-oracle: arm64 support (LP: #1925421)
Khaled Elmously
khalid.elmously at canonical.com
Wed Apr 28 09:50:57 UTC 2021
On 2021-04-27 10:11:44 , Juerg Haefliger wrote:
> On Mon, 26 Apr 2021 17:34:19 -0400
> Khaled Elmously <khalid.elmously at canonical.com> wrote:
>
> > BugLink: https://bugs.launchpad.net/bugs/1925421
> >
> > The following changes since commit a966d7fa5140c52c91352f4b882c8a797befdb96:
> >
> > UBUNTU: [Config]: Disable ATARI_PARTITION (2021-04-15 18:37:29 +0200)
> >
> > are available in the Git repository at:
> >
> > git+ssh://git.launchpad.net/~kmously/ubuntu/+source/linux/+git/focal tags/oracle-arm-11
> >
> > for you to fetch changes up to 5605c99ec04395a31e63edf46171cdd8d1f2de74:
>
> Invalid commit hash.
Sorry - fixed in v2
>
>
> > Perf: arm-cmn: Allow irq to be shared. (2021-04-26 17:24:21 -0400)
> >
> > ----------------------------------------------------------------
> > Baoquan He (1):
> > mm: memmap_init: iterate over memblock regions rather that check each PFN
> >
> > James Morse (2):
> > mm/memory-failure: Add memory_failure_queue_kick()
> > ACPI: APEI: Kick the memory_failure() queue for synchronous errors
> >
> > Khalid Elmously (5):
> > UBUNTU: Start new release
> > UBUNTU: [config] Bring-up for arm64 support
> > UBUNTU: [config] Update configs and annotations after arm64 bring-up
> > UBUNTU: [config] adding amba pl011 config
> > UBUNTU: [config] updateconfigs
> >
> > Mike Rapoport (20):
> > mm: memblock: replace dereferences of memblock_region.nid with API calls
> > mm: make early_pfn_to_nid() and related defintions close to each other
> > mm: remove CONFIG_HAVE_MEMBLOCK_NODE_MAP option
> > mm: free_area_init: use maximal zone PFNs rather than zone sizes
> > mm: use free_area_init() instead of free_area_init_nodes()
> > alpha: simplify detection of memory zone boundaries
> > arm: simplify detection of memory zone boundaries
> > arm64: simplify detection of memory zone boundaries for UMA configs
> > csky: simplify detection of memory zone boundaries
> > m68k: mm: simplify detection of memory zone boundaries
> > parisc: simplify detection of memory zone boundaries
> > sparc32: simplify detection of memory zone boundaries
> > unicore32: simplify detection of memory zone boundaries
> > xtensa: simplify detection of memory zone boundaries
> > mm: remove early_pfn_in_nid() and CONFIG_NODES_SPAN_OTHER_NODES
> > mm: free_area_init: allow defining max_zone_pfn in descending order
> > mm: rename free_area_init_node() to free_area_init_memoryless_node()
> > mm: clean up free_area_init_node() and its helpers
> > mm: simplify find_min_pfn_with_active_regions()
> > docs/vm: update memory-models documentation
> >
> > Robin Murphy (2):
> > perf: Add Arm CMN-600 PMU driver
> > perf: Add Arm CMN-600 DT binding
> >
> > Tuan Phan (7):
> > UBUNTU: SAUCE: perf/smmuv3: Allow sharing MMIO registers with the SMMU driver
> > arm64: Split the old READ_IMPLIES_EXEC workaround from executable
> > PCI/ACPI: Add Ampere Altra SOC MCFG quirk
> > driver/perf: Add PMU driver for the ARM DMC-620 memory controller
> > perf: arm_dsu: Support DSU ACPI devices
> > perf: arm_dsu: Allow IRQ to be shared among devices.
> > Perf: arm-cmn: Allow irq to be shared.
> >
> > Vanshidhar Konda (1):
> > arm64: NUMA: Kconfig: Increase NODES_SHIFT to 4
> >
> > lho (1):
> > hwmon: Add Ampere Altra HW monitor driver
> >
> > Documentation/admin-guide/perf/arm-cmn.rst | 65 +
> > Documentation/admin-guide/perf/index.rst | 1 +
> > .../devicetree/bindings/perf/arm,cmn.yaml | 57 +
> > .../features/vm/numa-memblock/arch-support.txt | 34 -
> > Documentation/vm/memory-model.rst | 9 +-
> > arch/alpha/mm/init.c | 16 +-
> > arch/alpha/mm/numa.c | 22 +-
> > arch/arc/mm/init.c | 41 +-
> > arch/arm/kernel/elf.c | 27 +-
> > arch/arm/mm/init.c | 66 +-
> > arch/arm64/Kconfig | 3 +-
> > arch/arm64/include/asm/elf.h | 23 +-
> > arch/arm64/mm/init.c | 48 +-
> > arch/arm64/mm/numa.c | 9 +-
> > arch/c6x/mm/init.c | 8 +-
> > arch/csky/kernel/setup.c | 26 +-
> > arch/h8300/mm/init.c | 6 +-
> > arch/hexagon/mm/init.c | 6 +-
> > arch/ia64/Kconfig | 1 -
> > arch/ia64/mm/contig.c | 2 +-
> > arch/ia64/mm/discontig.c | 2 +-
> > arch/m68k/mm/init.c | 6 +-
> > arch/m68k/mm/mcfmmu.c | 9 +-
> > arch/m68k/mm/motorola.c | 15 +-
> > arch/m68k/mm/sun3mmu.c | 10 +-
> > arch/microblaze/Kconfig | 1 -
> > arch/microblaze/mm/init.c | 2 +-
> > arch/mips/Kconfig | 1 -
> > arch/mips/mm/init.c | 2 +-
> > arch/mips/sgi-ip27/ip27-memory.c | 2 +-
> > arch/nds32/mm/init.c | 11 +-
> > arch/nios2/mm/init.c | 8 +-
> > arch/openrisc/mm/init.c | 9 +-
> > arch/parisc/mm/init.c | 22 +-
> > arch/powerpc/Kconfig | 10 -
> > arch/powerpc/mm/mem.c | 2 +-
> > arch/riscv/Kconfig | 1 -
> > arch/riscv/mm/init.c | 2 +-
> > arch/s390/Kconfig | 1 -
> > arch/s390/mm/init.c | 2 +-
> > arch/sh/Kconfig | 1 -
> > arch/sh/mm/init.c | 2 +-
> > arch/sparc/Kconfig | 10 -
> > arch/sparc/mm/init_64.c | 2 +-
> > arch/sparc/mm/srmmu.c | 21 +-
> > arch/um/kernel/mem.c | 12 +-
> > arch/unicore32/include/asm/memory.h | 2 +-
> > arch/unicore32/include/mach/memory.h | 6 +-
> > arch/unicore32/kernel/pci.c | 14 +-
> > arch/unicore32/mm/init.c | 43 +-
> > arch/x86/Kconfig | 10 -
> > arch/x86/include/asm/elf.h | 22 +-
> > arch/x86/mm/init.c | 2 +-
> > arch/x86/mm/numa.c | 11 +-
> > arch/xtensa/mm/init.c | 8 +-
> > debian.oracle/abi/5.4.0-1039.42/arm64/ignore | 0
> > .../abi/5.4.0-1039.42/arm64/ignore.modules | 0
> > .../abi/5.4.0-1039.42/arm64/ignore.retpoline | 0
> > debian.oracle/abi/5.4.0-1042.45/abiname | 1 -
> > debian.oracle/abi/5.4.0-1043.46/abiname | 1 +
> > .../{5.4.0-1042.45 => 5.4.0-1043.46}/amd64/oracle | 0
> > .../amd64/oracle.compiler | 0
> > .../amd64/oracle.modules | 0
> > .../amd64/oracle.retpoline | 0
> > debian.oracle/abi/5.4.0-1043.46/arm64/ignore | 0
> > .../abi/5.4.0-1043.46/arm64/ignore.modules | 0
> > .../abi/5.4.0-1043.46/arm64/ignore.retpoline | 0
> > .../abi/{5.4.0-1042.45 => 5.4.0-1043.46}/fwinfo | 0
> > debian.oracle/changelog | 8 +
> > debian.oracle/config/amd64/config.common.amd64 | 25 +
> > debian.oracle/config/annotations | 16 +-
> > debian.oracle/config/arm64/config.common.arm64 | 28 +
> > debian.oracle/config/arm64/config.flavour.oracle | 3 +
> > debian.oracle/config/config.common.ubuntu | 651 +++++++-
> > debian.oracle/control.d/linux-libc-dev.stub | 12 +
> > debian.oracle/control.d/vars.oracle | 4 +-
> > debian.oracle/control.stub.in | 2 +-
> > debian.oracle/etc/getabis | 1 +
> > debian.oracle/etc/kernelconfig | 2 +-
> > debian.oracle/rules.d/arm64.mk | 29 +
> > drivers/acpi/apei/ghes.c | 67 +-
> > drivers/acpi/pci_mcfg.c | 20 +
> > drivers/hwmon/Kconfig | 10 +
> > drivers/hwmon/Makefile | 1 +
> > drivers/hwmon/altra-hwmon.c | 435 ++++++
> > drivers/iommu/arm-smmu-v3.c | 2 +-
> > drivers/pci/ecam.c | 10 +
> > drivers/perf/Kconfig | 14 +
> > drivers/perf/Makefile | 2 +
> > drivers/perf/arm-cmn.c | 1641 ++++++++++++++++++++
> > drivers/perf/arm_dmc620_pmu.c | 748 +++++++++
> > drivers/perf/arm_dsu_pmu.c | 65 +-
> > drivers/perf/arm_smmuv3_pmu.c | 25 +-
> > fs/compat_binfmt_elf.c | 5 +
> > include/acpi/ghes.h | 3 +
> > include/linux/memblock.h | 8 +-
> > include/linux/mm.h | 32 +-
> > include/linux/mmzone.h | 11 +-
> > include/linux/pci-ecam.h | 1 +
> > mm/Kconfig | 3 -
> > mm/compaction.c | 4 +-
> > mm/memblock.c | 19 +-
> > mm/memory-failure.c | 15 +-
> > mm/memory_hotplug.c | 4 -
> > mm/page_alloc.c | 260 ++--
> > 105 files changed, 4234 insertions(+), 708 deletions(-)
> > create mode 100644 Documentation/admin-guide/perf/arm-cmn.rst
> > create mode 100644 Documentation/devicetree/bindings/perf/arm,cmn.yaml
> > delete mode 100644 Documentation/features/vm/numa-memblock/arch-support.txt
> > create mode 100644 debian.oracle/abi/5.4.0-1039.42/arm64/ignore
> > create mode 100644 debian.oracle/abi/5.4.0-1039.42/arm64/ignore.modules
> > create mode 100644 debian.oracle/abi/5.4.0-1039.42/arm64/ignore.retpoline
> > delete mode 100644 debian.oracle/abi/5.4.0-1042.45/abiname
> > create mode 100644 debian.oracle/abi/5.4.0-1043.46/abiname
> > rename debian.oracle/abi/{5.4.0-1042.45 => 5.4.0-1043.46}/amd64/oracle (100%)
> > rename debian.oracle/abi/{5.4.0-1042.45 => 5.4.0-1043.46}/amd64/oracle.compiler (100%)
> > rename debian.oracle/abi/{5.4.0-1042.45 => 5.4.0-1043.46}/amd64/oracle.modules (100%)
> > rename debian.oracle/abi/{5.4.0-1042.45 => 5.4.0-1043.46}/amd64/oracle.retpoline (100%)
> > create mode 100644 debian.oracle/abi/5.4.0-1043.46/arm64/ignore
> > create mode 100644 debian.oracle/abi/5.4.0-1043.46/arm64/ignore.modules
> > create mode 100644 debian.oracle/abi/5.4.0-1043.46/arm64/ignore.retpoline
> > rename debian.oracle/abi/{5.4.0-1042.45 => 5.4.0-1043.46}/fwinfo (100%)
> > create mode 100644 debian.oracle/config/arm64/config.common.arm64
> > create mode 100644 debian.oracle/config/arm64/config.flavour.oracle
> > create mode 100644 debian.oracle/control.d/linux-libc-dev.stub
> > create mode 100644 debian.oracle/rules.d/arm64.mk
> > create mode 100644 drivers/hwmon/altra-hwmon.c
> > create mode 100644 drivers/perf/arm-cmn.c
> > create mode 100644 drivers/perf/arm_dmc620_pmu.c
>
> It's unclear to me what the strategy was that resulted in this set of patches. Seems like random patches just to get it to boot?
The 5.4 kernel was already booting on the target hardware.
All these patches (and others) were backported/applied by Ampere to the 4.18 Centos kernel to make 4.18 work on the hardware. I picked only the ones we are missing in F/oracle 5.4
> Without looking at the technical content in detail there are quite a few issues with this PR:
>
> 1) Why are we adding a linux-libc-dev stub but disable it in debian.oracle/rules.d/arm64.mk?
Removed it in v2 . Thanks.
>
> 2) What's the origin of debian.oracle/rules.d/arm64.mk? The content seems wrong.
> - not building dtbs?
> - building hyperv tools?
> - building nvidia and hyperv dkms modules?
>
It is based on the f/aws arm64.mk file.
I didn't really pay attention to hyperv/nvidia as they were not causing neither build/runtime issues.
I'm not sure what effect/problem they were causing - but I have disabled them in v2 anyway since they're not in needed on Oracle/amd64 so not needed for Oracle/arm64 either.
No dtb for this hardware.
Thanks
> 3) Was there some sort of config review done? What jumps out is that KVM is disabled. Per SF this kernel is supposed to run on baremetal as a VM host. Huh?
Yes CONFIG_KVM should have been enabled. Not sure why it was enabled for amd64 but not arm64 (it is split because in amd64 it is a tristate and in arm64 it is a boolean). It has now been enabled as =y for arm64 in v2 - thanks.
>
> 4) Some commits are backports without any explanation what sort of changes were required to get them to apply. Not good.
Added explanations in v2 - thanks.
>
> 5) Some commits come from github. What origin is that?
The centos 4.18 kernel that I mentioned above: https://github.com/AmpereComputing/ampere-centos-kernel
(That URL forms the first part of the backport/cherry-pick URL) The "amp-centos-8.0-kernel" branch has the 4.18 kernel.
>
> 6) Nit: Commit messages contain 'cherry-picked from...'. That should be 'cherry picked from...' (no dash). Just like what 'git cherry-pick -x' produces.
>
Fixed in v2 - thanks.
> 7) There are quite a few commits in this PR that have follow-on fixes:
>
> 53c218da220c driver/perf: Add PMU driver for the ARM DMC-620 memory controller
> c8e386683652 perf/arm_dmc620_pmu: Fix error return code in dmc620_pmu_device_probe()
> 51930df5801e mm: free_area_init: allow defining max_zone_pfn in descending order
> 4af22ded0ecf arc: fix memory initialization for systems with two memory banks
> 73a6e474cb37 mm: memmap_init: iterate over memblock regions rather that check each PFN
> 0740a50b9baa mm/page_alloc.c: refactor initialization of struct page for holes in memory layout
> d3921cb8be29 mm: fix initialization of struct page for holes in memory layout
> 0ba64770a2f2 perf: Add Arm CMN-600 PMU driver
> 1c8147ea89c8 perf/arm-cmn: Move IRQs when migrating context
> 79d7c3dca99f perf/arm-cmn: Fix PMU instance naming
> d9ef632fab9b perf: arm-cmn: Fix unsigned comparison to less than zero
>
This is very helpful - thanks very much.
> 73a6e474cb37 mm: memmap_init: iterate over memblock regions rather that check each PFN
> 0740a50b9baa mm/page_alloc.c: refactor initialization of struct page for holes in memory layout
> d3921cb8be29 mm: fix initialization of struct page for holes in memory layout
There's been quite a mess of patches/refactors/reverts in this area upstream that are a bit hairy.
But basically, d3921cb8be29 was reverted then re-implemented as 0740a50b9baa so we only need 0740a50b9baa
and 0740a50b9baa needed a few pre-requisites to work properly, some of which I had already skipped/worked-around, and they're all a bit messy due to the multiple changes on mm/page_alloc.c
In the end it required 10 additional backported patches (would have been a lot more with clean cherry-picks, and would have affected other areas). Re-tested on arm64 and amd64
Thanks
> ...Juerg
More information about the kernel-team
mailing list