1. 24 Jan, 2021 2 commits
    • Mike Rapoport's avatar
      mm: fix initialization of struct page for holes in memory layout · d3921cb8
      Mike Rapoport authored
      There could be struct pages that are not backed by actual physical
      memory.  This can happen when the actual memory bank is not a multiple
      of SECTION_SIZE or when an architecture does not register memory holes
      reserved by the firmware as memblock.memory.
      
      Such pages are currently initialized using init_unavailable_mem()
      function that iterates through PFNs in holes in memblock.memory and if
      there is a struct page corresponding to a PFN, the fields if this page
      are set to default values and the page is marked as Reserved.
      
      init_unavailable_mem() does not take into account zone and node the page
      belongs to and sets both zone and node links in struct page to zero.
      
      On a system that has firmware reserved holes in a zone above ZONE_DMA,
      for instance in a configuration below:
      
      	# grep -A1 E820 /proc/iomem
      	7a17b000-7a216fff : Unknown E820 type
      	7a217000-7bffffff : System RAM
      
      unset zone link in struct page will trigger
      
      	VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
      
      because there are pages in both ZONE_DMA32 and ZONE_DMA (unset zone link
      in struct page) in the same pageblock.
      
      Update init_unavailable_mem() to use zone constraints defined by an
      architecture to properly setup the zone link and use node ID of the
      adjacent range in memblock.memory to set the node link.
      
      Link: https://lkml.kernel.org/r/20210111194017.22696-3-rppt@kernel.org
      Fixes: 73a6e474 ("mm: memmap_init: iterate over memblock regions rather that check each PFN")
      Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Reported-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Qian Cai <cai@lca.pw>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d3921cb8
    • Mike Rapoport's avatar
      x86/setup: don't remove E820_TYPE_RAM for pfn 0 · bde9cfa3
      Mike Rapoport authored
      Patch series "mm: fix initialization of struct page for holes in  memory layout", v3.
      
      Commit 73a6e474 ("mm: memmap_init: iterate over memblock regions
      rather that check each PFN") exposed several issues with the memory map
      initialization and these patches fix those issues.
      
      Initially there were crashes during compaction that Qian Cai reported
      back in April [1].  It seemed back then that the problem was fixed, but
      a few weeks ago Andrea Arcangeli hit the same bug [2] and there was an
      additional discussion at [3].
      
      [1] https://lore.kernel.org/lkml/8C537EB7-85EE-4DCF-943E-3CC0ED0DF56D@lca.pw
      [2] https://lore.kernel.org/lkml/20201121194506.13464-1-aarcange@redhat.com
      [3] https://lore.kernel.org/mm-commits/20201206005401.qKuAVgOXr%akpm@linux-foundation.org
      
      This patch (of 2):
      
      The first 4Kb of memory is a BIOS owned area and to avoid its allocation
      for the kernel it was not listed in e820 tables as memory.  As the result,
      pfn 0 was never recognised by the generic memory management and it is not
      a part of neither node 0 nor ZONE_DMA.
      
      If set_pfnblock_flags_mask() would be ever called for the pageblock
      corresponding to the first 2Mbytes of memory, having pfn 0 outside of
      ZONE_DMA would trigger
      
      	VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
      
      Along with reserving the first 4Kb in e820 tables, several first pages are
      reserved with memblock in several places during setup_arch().  These
      reservations are enough to ensure the kernel does not touch the BIOS area
      and it is not necessary to remove E820_TYPE_RAM for pfn 0.
      
      Remove the update of e820 table that changes the type of pfn 0 and move
      the comment describing why it was done to trim_low_memory_range() that
      reserves the beginning of the memory.
      
      Link: https://lkml.kernel.org/r/20210111194017.22696-2-rppt@kernel.orgSigned-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Cc: Baoquan He <bhe@redhat.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: David Hildenbrand <david@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Qian Cai <cai@lca.pw>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bde9cfa3
  2. 23 Jan, 2021 4 commits
  3. 22 Jan, 2021 12 commits
    • Linus Torvalds's avatar
      Merge tag 'for-5.11/dm-fixes-2' of... · fe75a218
      Linus Torvalds authored
      Merge tag 'for-5.11/dm-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper fixes from Mike Snitzer:
      
       - Fix DM integrity crash if "recalculate" used without "internal_hash"
      
       - Fix DM integrity "recalculate" support to prevent recalculating
         checksums if we use internal_hash or journal_hash with a key (e.g.
         HMAC). Use of crypto as a means to prevent malicious corruption
         requires further changes and was never a design goal for
         dm-integrity's primary usecase of detecting accidental corruption.
      
       - Fix a benign dm-crypt copy-and-paste bug introduced as part of a fix
         that was merged for 5.11-rc4.
      
       - Fix DM core's dm_get_device() to avoid filesystem lookup to get block
         device (if possible).
      
      * tag 'for-5.11/dm-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm: avoid filesystem lookup in dm_get_dev_t()
        dm crypt: fix copy and paste bug in crypt_alloc_req_aead
        dm integrity: conditionally disable "recalculate" feature
        dm integrity: fix a crash if "recalculate" used without "internal_hash"
      fe75a218
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-v5.11-2-2021-01-22' of... · faba877b
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-v5.11-2-2021-01-22' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull more perf tools fixes from Arnaldo Carvalho de Melo:
      
       - Fix id index used in Intel PT for heterogeneous systems
      
       - Fix overrun issue in 'perf script' for dynamically-allocated PMU type
         number
      
       - Fix 'perf stat' metrics containing the 'duration_time' synthetic
         event
      
       - Fix system PMU 'perf stat' metrics
      
      * tag 'perf-tools-fixes-v5.11-2-2021-01-22' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
        perf script: Fix overrun issue for dynamically-allocated PMU type number
        perf metricgroup: Fix system PMU metrics
        perf metricgroup: Fix for metrics containing duration_time
        perf evlist: Fix id index for heterogeneous systems
      faba877b
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 1c304c77
      Linus Torvalds authored
      Pull arm64 fixes from Catalin Marinas:
      
       - Correctly mask out bits 63:60 in a kernel tag check fault address
         (specified as unknown by the architecture). Previously they were just
         zeroed but for kernel pointers they need to be all ones.
      
       - Fix a panic (unexpected kernel BRK exception) caused by kprobes being
         reentered due to an interrupt.
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: kprobes: Fix Uexpected kernel BRK exception at EL1
        kasan, arm64: fix pointer tags in KASAN reports
      1c304c77
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-5.11-rc5' of git://github.com/ceph/ceph-client · a9034304
      Linus Torvalds authored
      Pull ceph fixes from Ilya Dryomov:
       "A patch to zero out sensitive cryptographic data and two minor
        cleanups prompted by the fact that a bunch of code was moved in this
        cycle"
      
      * tag 'ceph-for-5.11-rc5' of git://github.com/ceph/ceph-client:
        libceph: fix "Boolean result is used in bitwise operation" warning
        libceph, ceph: disambiguate ceph_connection_operations handlers
        libceph: zero out session key and connection secret
      a9034304
    • Linus Torvalds's avatar
      Merge tag 'fixes-2021-01-22' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock · df7da31d
      Linus Torvalds authored
      Pull typo fix from Mike Rapoport:
       "Fix typo in comment of memblock_phys_alloc_try_nid()"
      
      * tag 'fixes-2021-01-22' of git://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock:
        mm/memblock: Fix typo in comment of memblock_phys_alloc_try_nid()
      df7da31d
    • Linus Torvalds's avatar
      Merge tag 'mmc-v5.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 59a4560e
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
       "MMC core:
         - Fix initialization of block size when ext_csd isn't present
      
        MMC host:
         - sdhci-brcmstb: Fix mmc timeout errors on S5 suspend
         - sdhci-of-dwcmshc: Fix request accessing RPMB
         - sdhci-xenon: Fix 1.8v regulator stabilization"
      
      * tag 'mmc-v5.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        mmc: core: don't initialize block size from ext_csd if not present
        mmc: sdhci-brcmstb: Fix mmc timeout errors on S5 suspend
        mmc: sdhci-xenon: fix 1.8v regulator stabilization
        mmc: sdhci-of-dwcmshc: fix rpmb access
      59a4560e
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v5.11-2' of... · 9887e9af
      Linus Torvalds authored
      Merge tag 'platform-drivers-x86-v5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
      
      Pull x86 platform driver fixes from Hans de Goede:
       "A small collection of bug-fixes and model-specific quirks"
      
      * tag 'platform-drivers-x86-v5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
        platform/x86: thinkpad_acpi: Add P53/73 firmware to fan_quirk_table for dual fan control
        platform/x86: hp-wmi: Don't log a warning on HPWMI_RET_UNKNOWN_COMMAND errors
        platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from allow-list
        platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634
        platform/x86: amd-pmc: Fix CONFIG_DEBUG_FS check
        platform/x86: thinkpad_acpi: correct palmsensor error checking
        platform/x86: intel-vbtn: Support for tablet mode on Dell Inspiron 7352
        platform/x86: touchscreen_dmi: Add swap-x-y quirk for Goodix touchscreen on Estar Beauty HD tablet
        platform/x86: i2c-multi-instantiate: Don't create platform device for INT3515 ACPI nodes
        platform/surface: SURFACE_PLATFORMS should depend on ACPI
        platform/surface: surface_gpe: Fix non-PM_SLEEP build warnings
        tools/power/x86/intel-speed-select: Set higher of cpuinfo_max_freq or base_frequency
        tools/power/x86/intel-speed-select: Set scaling_max_freq to base_frequency
      9887e9af
    • Qais Yousef's avatar
      arm64: kprobes: Fix Uexpected kernel BRK exception at EL1 · 75bd4bff
      Qais Yousef authored
      I was hitting the below panic continuously when attaching kprobes to
      scheduler functions
      
      	[  159.045212] Unexpected kernel BRK exception at EL1
      	[  159.053753] Internal error: BRK handler: f2000006 [#1] PREEMPT SMP
      	[  159.059954] Modules linked in:
      	[  159.063025] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 5.11.0-rc4-00008-g1e2a199f #56
      	[rt-app] <notice> [1] Exiting.[  159.071166] Hardware name: ARM Juno development board (r2) (DT)
      	[  159.079689] pstate: 600003c5 (nZCv DAIF -PAN -UAO -TCO BTYPE=--)
      
      	[  159.085723] pc : 0xffff80001624501c
      	[  159.089377] lr : attach_entity_load_avg+0x2ac/0x350
      	[  159.094271] sp : ffff80001622b640
      	[rt-app] <notice> [0] Exiting.[  159.097591] x29: ffff80001622b640 x28: 0000000000000001
      	[  159.105515] x27: 0000000000000049 x26: ffff000800b79980
      
      	[  159.110847] x25: ffff00097ef37840 x24: 0000000000000000
      	[  159.116331] x23: 00000024eacec1ec x22: ffff00097ef12b90
      	[  159.121663] x21: ffff00097ef37700 x20: ffff800010119170
      	[rt-app] <notice> [11] Exiting.[  159.126995] x19: ffff00097ef37840 x18: 000000000000000e
      	[  159.135003] x17: 0000000000000001 x16: 0000000000000019
      	[  159.140335] x15: 0000000000000000 x14: 0000000000000000
      	[  159.145666] x13: 0000000000000002 x12: 0000000000000002
      	[  159.150996] x11: ffff80001592f9f0 x10: 0000000000000060
      	[  159.156327] x9 : ffff8000100f6f9c x8 : be618290de0999a1
      	[  159.161659] x7 : ffff80096a4b1000 x6 : 0000000000000000
      	[  159.166990] x5 : ffff00097ef37840 x4 : 0000000000000000
      	[  159.172321] x3 : ffff000800328948 x2 : 0000000000000000
      	[  159.177652] x1 : 0000002507d52fec x0 : ffff00097ef12b90
      	[  159.182983] Call trace:
      	[  159.185433]  0xffff80001624501c
      	[  159.188581]  update_load_avg+0x2d0/0x778
      	[  159.192516]  enqueue_task_fair+0x134/0xe20
      	[  159.196625]  enqueue_task+0x4c/0x2c8
      	[  159.200211]  ttwu_do_activate+0x70/0x138
      	[  159.204147]  sched_ttwu_pending+0xbc/0x160
      	[  159.208253]  flush_smp_call_function_queue+0x16c/0x320
      	[  159.213408]  generic_smp_call_function_single_interrupt+0x1c/0x28
      	[  159.219521]  ipi_handler+0x1e8/0x3c8
      	[  159.223106]  handle_percpu_devid_irq+0xd8/0x460
      	[  159.227650]  generic_handle_irq+0x38/0x50
      	[  159.231672]  __handle_domain_irq+0x6c/0xc8
      	[  159.235781]  gic_handle_irq+0xcc/0xf0
      	[  159.239452]  el1_irq+0xb4/0x180
      	[  159.242600]  rcu_is_watching+0x28/0x70
      	[  159.246359]  rcu_read_lock_held_common+0x44/0x88
      	[  159.250991]  rcu_read_lock_any_held+0x30/0xc0
      	[  159.255360]  kretprobe_dispatcher+0xc4/0xf0
      	[  159.259555]  __kretprobe_trampoline_handler+0xc0/0x150
      	[  159.264710]  trampoline_probe_handler+0x38/0x58
      	[  159.269255]  kretprobe_trampoline+0x70/0xc4
      	[  159.273450]  run_rebalance_domains+0x54/0x80
      	[  159.277734]  __do_softirq+0x164/0x684
      	[  159.281406]  irq_exit+0x198/0x1b8
      	[  159.284731]  __handle_domain_irq+0x70/0xc8
      	[  159.288840]  gic_handle_irq+0xb0/0xf0
      	[  159.292510]  el1_irq+0xb4/0x180
      	[  159.295658]  arch_cpu_idle+0x18/0x28
      	[  159.299245]  default_idle_call+0x9c/0x3e8
      	[  159.303265]  do_idle+0x25c/0x2a8
      	[  159.306502]  cpu_startup_entry+0x2c/0x78
      	[  159.310436]  secondary_start_kernel+0x160/0x198
      	[  159.314984] Code: d42000c0 aa1e03e9 d42000c0 aa1e03e9 (d42000c0)
      
      After a bit of head scratching and debugging it turned out that it is
      due to kprobe handler being interrupted by a tick that causes us to go
      into (I think another) kprobe handler.
      
      The culprit was kprobe_breakpoint_ss_handler() returning DBG_HOOK_ERROR
      which leads to the Unexpected kernel BRK exception.
      
      Reverting commit ba090f9c ("arm64: kprobes: Remove redundant
      kprobe_step_ctx") seemed to fix the problem for me.
      
      Further analysis showed that kcb->kprobe_status is set to
      KPROBE_REENTER when the error occurs. By teaching
      kprobe_breakpoint_ss_handler() to handle this status I can no  longer
      reproduce the problem.
      
      Fixes: ba090f9c ("arm64: kprobes: Remove redundant kprobe_step_ctx")
      Signed-off-by: default avatarQais Yousef <qais.yousef@arm.com>
      Acked-by: default avatarWill Deacon <will@kernel.org>
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Link: https://lore.kernel.org/r/20210122110909.3324607-1-qais.yousef@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      75bd4bff
    • Krzysztof Kozlowski's avatar
      i2c: sprd: depend on COMMON_CLK to fix compile tests · 9ecd1d2b
      Krzysztof Kozlowski authored
      The I2C_SPRD uses Common Clock Framework thus it cannot be built on
      platforms without it (e.g. compile test on MIPS with LANTIQ):
      
          /usr/bin/mips-linux-gnu-ld: drivers/i2c/busses/i2c-sprd.o: in function `sprd_i2c_probe':
          i2c-sprd.c:(.text.sprd_i2c_probe+0x254): undefined reference to `clk_set_parent'
      
      Fixes: 4a2d5f66 ("i2c: Enable compile testing for more drivers")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Reviewed-by: default avatarBaolin Wang <baolin.wang7@gmail.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      9ecd1d2b
    • Fabio Estevam's avatar
      Revert "i2c: imx: Remove unused .id_table support" · a4166340
      Fabio Estevam authored
      Coldfire platforms are non-DT users of this driver, so
      keep the .id_table support.
      
      This reverts commit c610199c.
      
      Fixes: c610199c (i2c: imx: Remove unused .id_table support")
      Reported-by: default avatarSascha Hauer <sha@pengutronix.de>
      Signed-off-by: default avatarFabio Estevam <festevam@gmail.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      a4166340
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://github.com/openrisc/linux · 83d09ad4
      Linus Torvalds authored
      Pull OpenRISC fixes from Stafford Horne:
      
       - Compiler warning fixup for new Litex SoC driver
      
       - Sparse warning fixup for iounmap
      
      * tag 'for-linus' of git://github.com/openrisc/linux:
        openrisc: io: Add missing __iomem annotation to iounmap()
        soc: litex: Fix compile warning when device tree is not configured
      83d09ad4
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2021-01-22' of git://anongit.freedesktop.org/drm/drm · 36ada250
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular fixes pull, nothing too major in here, just some core fixes,
        one vc4, bunch of i915 and a bunch of amdgpu.
      
        core:
         - atomic: Release state on error
         - syncobj: Fix use-after-free
         - ttm: Don't use GFP_TRANSHUGE_LIGTH
         - vram-helper: Fix memory leak in vmap
      
        vc4:
         - Unify driver naming for PCM
      
        i915:
         - HDCP fixes
         - PMU wakeref fix
         - Fix HWSP validity race
         - Fix DP protocol converter accidental 4:4:4->4:2:0 conversion for RGB
      
        amdgpu:
         - Green Sardine fixes
         - Vangogh fixes
         - Renoir fixes
         - Misc display fixes"
      
      * tag 'drm-fixes-2021-01-22' of git://anongit.freedesktop.org/drm/drm: (21 commits)
        drm/amdgpu: update mmhub mgcg&ls for mmhub_v2_3
        drm/amdgpu: modify GCR_GENERAL_CNTL for Vangogh
        drm/amdgpu/pm: no need GPU status set since mmnbif_gpu_BIF_DOORBELL_FENCE_CNTL added in FSDL
        drm/amd/display: Fixed corruptions on HPDRX link loss restore
        drm/amd/display: Use hardware sequencer functions for PG control
        drm/amd/display: Change function decide_dp_link_settings to avoid infinite looping
        drm/amd/display: Allow PSTATE chnage when no displays are enabled
        drm/amd/display: Update dram_clock_change_latency for DCN2.1
        drm/amdgpu: remove gpu info firmware of green sardine
        drm/amd/display: DCN2X Find Secondary Pipe properly in MPO + ODM Case
        drm/syncobj: Fix use-after-free
        drm/vram-helper: Reuse existing page mappings in vmap
        drm/atomic: put state on error path
        drm/i915: Only enable DFP 4:4:4->4:2:0 conversion when outputting YCbCr 4:4:4
        drm/i915: Check for rq->hwsp validity after acquiring RCU lock
        drm/i915/pmu: Don't grab wakeref when enabling events
        drm/i915/gt: Prevent use of engine->wa_ctx after error
        drm/vc4: Unify PCM card's driver_name
        drm/ttm: stop using GFP_TRANSHUGE_LIGHT
        drm/i915/hdcp: Get conn while content_type changed
        ...
      36ada250
  4. 21 Jan, 2021 22 commits