1. 21 Jun, 2024 3 commits
    • Hui Li's avatar
      LoongArch: Trigger user-space watchpoints correctly · c8e57ab0
      Hui Li authored
      In the current code, gdb can set the watchpoint successfully through
      ptrace interface, but watchpoint will not be triggered.
      
      When debugging the following code using gdb.
      
      lihui@bogon:~$ cat test.c
        #include <stdio.h>
        int a = 0;
        int main()
        {
      	a = 1;
      	printf("a = %d\n", a);
      	return 0;
        }
      lihui@bogon:~$ gcc -g test.c -o test
      lihui@bogon:~$ gdb test
      ...
      (gdb) watch a
      ...
      (gdb) r
      ...
      a = 1
      [Inferior 1 (process 4650) exited normally]
      
      No watchpoints were triggered, the root causes are:
      
      1. Kernel uses perf_event and hw_breakpoint framework to control
         watchpoint, but the perf_event corresponding to watchpoint is
         not enabled. So it needs to be enabled according to MWPnCFG3
         or FWPnCFG3 PLV bit field in ptrace_hbp_set_ctrl(), and privilege
         is set according to the monitored addr in hw_breakpoint_control().
         Furthermore, add a judgment in ptrace_hbp_set_addr() to ensure
         kernel-space addr cannot be monitored in user mode.
      
      2. The global enable control for all watchpoints is the WE bit of
         CSR.CRMD, and hardware sets the value to 0 when an exception is
         triggered. When the ERTN instruction is executed to return, the
         hardware restores the value of the PWE field of CSR.PRMD here.
         So, before a thread containing watchpoints be scheduled, the PWE
         field of CSR.PRMD needs to be set to 1. Add this modification in
         hw_breakpoint_control().
      
      All changes according to the LoongArch Reference Manual:
      https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
      https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#basic-control-and-status-registers
      
      With this patch:
      
      lihui@bogon:~$ gdb test
      ...
      (gdb) watch a
      Hardware watchpoint 1: a
      (gdb) r
      ...
      Hardware watchpoint 1: a
      
      Old value = 0
      New value = 1
      main () at test.c:6
      6		printf("a = %d\n", a);
      (gdb) c
      Continuing.
      a = 1
      [Inferior 1 (process 775) exited normally]
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarHui Li <lihui@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      c8e57ab0
    • Hui Li's avatar
      LoongArch: Fix watchpoint setting error · f63a47b3
      Hui Li authored
      In the current code, when debugging the following code using gdb,
      "invalid argument ..." message will be displayed.
      
      lihui@bogon:~$ cat test.c
        #include <stdio.h>
        int a = 0;
        int main()
        {
      	a = 1;
      	return 0;
        }
      lihui@bogon:~$ gcc -g test.c -o test
      lihui@bogon:~$ gdb test
      ...
      (gdb) watch a
      Hardware watchpoint 1: a
      (gdb) r
      ...
      Invalid argument setting hardware debug registers
      
      There are mainly two types of issues.
      
      1. Some incorrect judgment condition existed in user_watch_state
         argument parsing, causing -EINVAL to be returned.
      
      When setting up a watchpoint, gdb uses the ptrace interface,
      ptrace(PTRACE_SETREGSET, tid, NT_LOONGARCH_HW_WATCH, (void *) &iov)).
      Register values in user_watch_state as follows:
      
        addr[0] = 0x0, mask[0] = 0x0, ctrl[0] = 0x0
        addr[1] = 0x0, mask[1] = 0x0, ctrl[1] = 0x0
        addr[2] = 0x0, mask[2] = 0x0, ctrl[2] = 0x0
        addr[3] = 0x0, mask[3] = 0x0, ctrl[3] = 0x0
        addr[4] = 0x0, mask[4] = 0x0, ctrl[4] = 0x0
        addr[5] = 0x0, mask[5] = 0x0, ctrl[5] = 0x0
        addr[6] = 0x0, mask[6] = 0x0, ctrl[6] = 0x0
        addr[7] = 0x12000803c, mask[7] = 0x0, ctrl[7] = 0x610
      
      In arch_bp_generic_fields(), return -EINVAL when ctrl.len is
      LOONGARCH_BREAKPOINT_LEN_8(0b00). So delete the incorrect judgment here.
      
      In ptrace_hbp_fill_attr_ctrl(), when note_type is NT_LOONGARCH_HW_WATCH
      and ctrl[0] == 0x0, if ((type & HW_BREAKPOINT_RW) != type) will return
      -EINVAL. Here ctrl.type should be set based on note_type, and unnecessary
      judgments can be removed.
      
      2. The watchpoint argument was not set correctly due to unnecessary
         offset and alignment_mask.
      
      Modify ptrace_hbp_fill_attr_ctrl() and hw_breakpoint_arch_parse(), which
      ensure the watchpont argument is set correctly.
      
      All changes according to the LoongArch Reference Manual:
      https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#control-and-status-registers-related-to-watchpoints
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarHui Li <lihui@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      f63a47b3
    • Xi Ruoyao's avatar
      LoongArch: Only allow OBJTOOL & ORC unwinder if toolchain supports -mthin-add-sub · 120dd411
      Xi Ruoyao authored
      GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
      "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
      Objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
      (static key implementation) and etc. so it will produce some warnings.
      This is causing the kernel CI systems to complain everywhere.
      
      For GAS we can check if -mthin-add-sub option is available to know if
      R_LARCH_{32,64}_PCREL are supported.
      
      For Clang, we require Clang >= 18 and Clang >= 17 already supports
      R_LARCH_{32,64}_PCREL. But unfortunately Clang has some other issues,
      so we disable objtool for Clang at present.
      
      Note that __jump_table here is not generated by the compiler, so
      -fno-jump-table is completely irrelevant for this issue.
      
      Fixes: cb8a2ef0 ("LoongArch: Add ORC stack unwinder support")
      Closes: https://lore.kernel.org/loongarch/Zl5m1ZlVmGKitAof@yujie-X299/
      Closes: https://lore.kernel.org/loongarch/ZlY1gDDPi_mNrwJ1@slm.duckdns.org/
      Closes: https://lore.kernel.org/loongarch/1717478006.038663-1-hengqi@linux.alibaba.com/
      Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=816029e06768
      Link: https://github.com/llvm/llvm-project/commit/42cb3c6346fcSigned-off-by: default avatarXi Ruoyao <xry111@xry111.site>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      120dd411
  2. 16 Jun, 2024 14 commits
    • Linus Torvalds's avatar
      Linux 6.10-rc4 · 6ba59ff4
      Linus Torvalds authored
      6ba59ff4
    • Linus Torvalds's avatar
      Merge tag 'parisc-for-6.10-rc4' of... · 6456c425
      Linus Torvalds authored
      Merge tag 'parisc-for-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
      
      Pull parisc fix from Helge Deller:
       "On parisc we have suffered since years from random segfaults which
        seem to have been triggered due to cache inconsistencies. Those
        segfaults happened more often on machines with PA8800 and PA8900 CPUs,
        which have much bigger caches than the earlier machines.
      
        Dave Anglin has worked over the last few weeks to fix this bug. His
        patch has been successfully tested by various people on various
        machines and with various kernels (6.6, 6.8 and 6.9), and the debian
        buildd servers haven't shown a single random segfault with this patch.
      
        Since the cache handling has been reworked, the patch is slightly
        bigger than I would like in this stage, but the greatly improved
        stability IMHO justifies the inclusion now"
      
      * tag 'parisc-for-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Try to fix random segmentation faults in package builds
      6456c425
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 4301487e
      Linus Torvalds authored
      Pull i2c fixes from Wolfram Sang:
       "Two fixes to correctly report i2c functionality, ensuring that
        I2C_FUNC_SLAVE is reported when a device operates solely as a slave
        interface"
      
      * tag 'i2c-for-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: designware: Fix the functionality flags of the slave-only interface
        i2c: at91: Fix the functionality flags of the slave-only interface
      4301487e
    • Linus Torvalds's avatar
      Merge tag 'usb-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · b5beaa44
      Linus Torvalds authored
      Pull USB / Thunderbolt fixes from Greg KH:
       "Here are some small USB and Thunderbolt driver fixes for 6.10-rc4.
        Included in here are:
      
         - thunderbolt debugfs bugfix
      
         - USB typec bugfixes
      
         - kcov usb bugfix
      
         - xhci bugfixes
      
         - usb-storage bugfix
      
         - dt-bindings bugfix
      
         - cdc-wdm log message spam bugfix
      
        All of these, except for the last cdc-wdm log level change, have been
        in linux-next for a while with no reported problems. The cdc-wdm
        bugfix has been tested by syzbot and proved to fix the reported cpu
        lockup issues when the log is constantly spammed by a broken device"
      
      * tag 'usb-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        USB: class: cdc-wdm: Fix CPU lockup caused by excessive log messages
        xhci: Handle TD clearing for multiple streams case
        xhci: Apply broken streams quirk to Etron EJ188 xHCI host
        xhci: Apply reset resume quirk to Etron EJ188 xHCI host
        xhci: Set correct transferred length for cancelled bulk transfers
        usb-storage: alauda: Check whether the media is initialized
        usb: typec: ucsi: Ack also failed Get Error commands
        kcov, usb: disable interrupts in kcov_remote_start_usb_softirq
        dt-bindings: usb: realtek,rts5411: Add missing "additionalProperties" on child nodes
        usb: typec: tcpm: Ignore received Hard Reset in TOGGLING state
        usb: typec: tcpm: fix use-after-free case in tcpm_register_source_caps
        USB: xen-hcd: Traverse host/ when CONFIG_USB_XEN_HCD is selected
        usb: typec: ucsi: glink: increase max ports for x1e80100
        Revert "usb: chipidea: move ci_ulpi_init after the phy initialization"
        thunderbolt: debugfs: Fix margin debugfs node creation condition
      b5beaa44
    • Linus Torvalds's avatar
      Merge tag 'tty-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 6efc63a8
      Linus Torvalds authored
      Pull tty/serial driver fixes from Greg KH:
       "Here are some small tty and serial driver fixes that resolve som
        reported problems. Included in here are:
      
         - n_tty lookahead buffer bugfix
      
         - WARN_ON() removal where it was not needed
      
         - 8250_dw driver bugfixes
      
         - 8250_pxa bugfix
      
         - sc16is7xx Kconfig fixes for reported build issues
      
        All of these have been in linux-next for over a week with no reported
        problems"
      
      * tag 'tty-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        serial: drop debugging WARN_ON_ONCE() from uart_write()
        serial: sc16is7xx: re-add Kconfig SPI or I2C dependency
        serial: sc16is7xx: rename Kconfig CONFIG_SERIAL_SC16IS7XX_CORE
        serial: port: Don't block system suspend even if bytes are left to xmit
        serial: 8250_pxa: Configure tx_loadsz to match FIFO IRQ level
        serial: 8250_dw: Revert "Move definitions to the shared header"
        serial: 8250_dw: Don't use struct dw8250_data outside of 8250_dw
        tty: n_tty: Fix buffer offsets when lookahead is used
      6efc63a8
    • Linus Torvalds's avatar
      Merge tag 'staging-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · d3e6dc4f
      Linus Torvalds authored
      Pull staging driver fix from Greg KH:
       "Here is a single staging driver fix, for the vc04 driver. It resolves
        a reported problem that showed up in the merge window set of changes.
      
        It's been in linux-next for over a week with no reported problems"
      
      * tag 'staging-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        staging: vchiq_debugfs: Fix NPD in vchiq_dump_state
      d3e6dc4f
    • Linus Torvalds's avatar
      Merge tag 'driver-core-6.10-rc4' of... · e12fa4dd
      Linus Torvalds authored
      Merge tag 'driver-core-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull driver core and sysfs fixes from Greg KH:
       "Here are three small changes for 6.10-rc4 that resolve reported
        problems, and finally drop an unused api call. These are:
      
         - removal of devm_device_add_groups(), all the callers of this are
           finally gone after the 6.10-rc1 merge (changes came in through
           different trees), so it's safe to remove.
      
         - much reported sysfs build error fixed up for systems that did not
           have sysfs enabled
      
         - driver core sync issue fix for a many reported issue over the years
           that no one really paid much attention to, until Dirk finally
           tracked down the real issue and made the "obviously correct and
           simple" fix for it.
      
        All of these have been in linux-next for over a week with no reported
        problems"
      
      * tag 'driver-core-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        drivers: core: synchronize really_probe() and dev_uevent()
        sysfs: Unbreak the build around sysfs_bin_attr_simple_read()
        driver core: remove devm_device_add_groups()
      e12fa4dd
    • Linus Torvalds's avatar
      Merge tag 'char-misc-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 33f855cb
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are a number of small char/misc and iio driver fixes for
        6.10-rc4. Included in here are the following:
      
         - iio driver fixes for a bunch of reported problems.
      
         - mei driver fixes for a number of reported issues.
      
         - amiga parport driver build fix.
      
         - .editorconfig fix that was causing lots of unintended whitespace
           changes to happen to files when they were being edited. Unless we
           want to sweep the whole tree and remove all trailing whitespace at
           once, this is needed for the .editorconfig file to be able to be
           used at all. This change is required because the original
           submitters never touched older files in the tree.
      
         - jfs bugfix for a buffer overflow
      
        The jfs bugfix is in here as I didn't know where else to put it, and
        it's been ignored for a while as the filesystem seems to be abandoned
        and I'm tired of seeing the same issue reported in multiple places.
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'char-misc-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (25 commits)
        .editorconfig: remove trim_trailing_whitespace option
        jfs: xattr: fix buffer overflow for invalid xattr
        misc: microchip: pci1xxxx: Fix a memory leak in the error handling of gp_aux_bus_probe()
        misc: microchip: pci1xxxx: fix double free in the error handling of gp_aux_bus_probe()
        parport: amiga: Mark driver struct with __refdata to prevent section mismatch
        mei: vsc: Fix wrong invocation of ACPI SID method
        mei: vsc: Don't stop/restart mei device during system suspend/resume
        mei: me: release irq in mei_me_pci_resume error path
        mei: demote client disconnect warning on suspend to debug
        iio: inkern: fix channel read regression
        iio: imu: inv_mpu6050: stabilized timestamping in interrupt
        iio: adc: ad7173: Fix sampling frequency setting
        iio: adc: ad7173: Clear append status bit
        iio: imu: inv_icm42600: delete unneeded update watermark call
        iio: imu: inv_icm42600: stabilized timestamp in interrupt
        iio: invensense: fix odr switching to same value
        iio: adc: ad7173: Remove index from temp channel
        iio: adc: ad7173: Add ad7173_device_info names
        iio: adc: ad7173: fix buffers enablement for ad7176-2
        iio: temperature: mlx90635: Fix ERR_PTR dereference in mlx90635_probe()
        ...
      33f855cb
    • Linus Torvalds's avatar
      Merge tag 'ata-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux · e8b0264d
      Linus Torvalds authored
      Pull ata fix from Niklas Cassel:
       "Fix a bug where the SCSI Removable Media Bit (RMB) was incorrectly set
        for hot-plug capable (and eSATA) ports.
      
        The RMB bit means that the media is removable (e.g. floppy or CD-ROM),
        not that the device server is removable. If the RMB bit is set, SCSI
        will set the removable media sysfs attribute.
      
        If the removable media sysfs attribute is set on a device,
        GNOME/udisks will automatically mount the device on boot.
      
        We only want to set the SCSI RMB bit (and thus the removable media
        sysfs attribute) for devices where the ATA removable media device bit
        is set"
      
      * tag 'ata-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux:
        ata: libata-scsi: Set the RMB bit only for removable media devices
      e8b0264d
    • Linus Torvalds's avatar
      Merge tag 'edac_urgent_for_v6.10_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · e39388e4
      Linus Torvalds authored
      Pull EDAC fixes from Borislav Petkov:
      
       - Fix two issues with MI300 address translation logic
      
      * tag 'edac_urgent_for_v6.10_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        RAS/AMD/ATL: Use system settings for MI300 DRAM to normalized address translation
        RAS/AMD/ATL: Fix MI300 bank hash
      e39388e4
    • Linus Torvalds's avatar
      Merge tag 'firewire-fixes-6.10-rc4' of... · be2fa886
      Linus Torvalds authored
      Merge tag 'firewire-fixes-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394
      
      Pull firewire fixes from Takashi Sakamoto:
      
       - Update tracepoints events introduced in v6.10-rc1 so that it includes
         the numeric identifier of host card in which the event happens
      
       - replace wiki URL with the current website URL in Kconfig
      
      * tag 'firewire-fixes-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
        firewire: core: record card index in bus_reset_handle tracepoints event
        firewire: core: record card index in tracepoinrts events derived from bus_reset_arrange_template
        firewire: core: record card index in async_phy_inbound tracepoints event
        firewire: core: record card index in async_phy_outbound_complete tracepoints event
        firewire: core: record card index in async_phy_outbound_initiate tracepoints event
        firewire: core: record card index in tracepoinrts events derived from async_inbound_template
        firewire: core: record card index in tracepoinrts events derived from async_outbound_initiate_template
        firewire: core: record card index in tracepoinrts events derived from async_outbound_complete_template
        firewire: fix website URL in Kconfig
      be2fa886
    • Hans de Goede's avatar
      leds: class: Revert: "If no default trigger is given, make hw_control trigger the default trigger" · fcf2a997
      Hans de Goede authored
      Commit 66601a29 ("leds: class: If no default trigger is given, make
      hw_control trigger the default trigger") causes ledtrig-netdev to get
      set as default trigger on various network LEDs.
      
      This causes users to hit a pre-existing AB-BA deadlock issue in
      ledtrig-netdev between the LED-trigger locks and the rtnl mutex,
      resulting in hung tasks in kernels >= 6.9.
      
      Solving the deadlock is non trivial, so for now revert the change to
      set the hw_control trigger as default trigger, so that ledtrig-netdev
      no longer gets activated automatically for various network LEDs.
      
      The netdev trigger is not needed because the network LEDs are usually under
      hw-control and the netdev trigger tries to leave things that way so setting
      it as the active trigger for the LED class device is a no-op.
      
      Fixes: 66601a29 ("leds: class: If no default trigger is given, make hw_control trigger the default trigger")
      Reported-by: default avatarGenes Lists <lists@sapience.com>
      Closes: https://lore.kernel.org/all/9d189ec329cfe68ed68699f314e191a10d4b5eda.camel@sapience.com/Reported-by: default avatarJohannes Wüller <johanneswueller@gmail.com>
      Closes: https://lore.kernel.org/lkml/e441605c-eaf2-4c2d-872b-d8e541f4cf60@gmail.com/
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Acked-by: default avatarLee Jones <lee@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fcf2a997
    • Wolfram Sang's avatar
      Merge tag 'i2c-host-fixes-6.10-rc4' of... · 7e9bb0cb
      Wolfram Sang authored
      Merge tag 'i2c-host-fixes-6.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current
      
      Two fixes from Jean aim to correctly report i2c functionality,
      specifically ensuring that I2C_FUNC_SLAVE is reported when a
      device operates solely as a slave interface.
      7e9bb0cb
    • Yazen Ghannam's avatar
      RAS/AMD/ATL: Use system settings for MI300 DRAM to normalized address translation · ba437905
      Yazen Ghannam authored
      The currently used normalized address format is not applicable to all
      MI300 systems. This leads to incorrect results during address
      translation.
      
      Drop the fixed layout and construct the normalized address from system
      settings.
      
      Fixes: 87a61237 ("RAS/AMD/ATL: Add MI300 DRAM to normalized address translation support")
      Signed-off-by: default avatarYazen Ghannam <yazen.ghannam@amd.com>
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Cc: <stable@kernel.org>
      Link: https://lore.kernel.org/r/20240607-mi300-dram-xl-fix-v1-2-2f11547a178c@amd.com
      ba437905
  3. 15 Jun, 2024 16 commits
  4. 14 Jun, 2024 7 commits