~ubuntu-kernel/ubuntu/+source/linux/+git/jammy:master-next

Last commit made on 2024-09-13
Get this branch:
git clone -b master-next https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy
Members of Ubuntu Kernel Repositories can upload to this branch. Log in for directions.

Branch merges

Branch information

Recent commits

6a76542... by Koichiro Den

UBUNTU: Upstream stable to v5.15.166

BugLink: https://bugs.launchpad.net/bugs/2080594

Ignore: yes
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

ebf291e... by Greg Kroah-Hartman <email address hidden>

Linux 5.15.166

BugLink: https://bugs.launchpad.net/bugs/2080594

Link: https://<email address hidden>
Tested-by: Harshit Mogalapalli <email address hidden>
Tested-by: Florian Fainelli <email address hidden>
Tested-by: Ron Economos <email address hidden>
Tested-by: Jon Hunter <email address hidden>
Tested-by: Mark Brown <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

8705c78... by Guenter Roeck

apparmor: fix policy_unpack_test on big endian systems

BugLink: https://bugs.launchpad.net/bugs/2080594

[ Upstream commit 98c0cc48e27e9d269a3e4db2acd72b486c88ec77 ]

policy_unpack_test fails on big endian systems because data byte order
is expected to be little endian but is generated in host byte order.
This results in test failures such as:

 # policy_unpack_test_unpack_array_with_null_name: EXPECTATION FAILED at security/apparmor/policy_unpack_test.c:150
    Expected array_size == (u16)16, but
        array_size == 4096 (0x1000)
        (u16)16 == 16 (0x10)
    # policy_unpack_test_unpack_array_with_null_name: pass:0 fail:1 skip:0 total:1
    not ok 3 policy_unpack_test_unpack_array_with_null_name
    # policy_unpack_test_unpack_array_with_name: EXPECTATION FAILED at security/apparmor/policy_unpack_test.c:164
    Expected array_size == (u16)16, but
        array_size == 4096 (0x1000)
        (u16)16 == 16 (0x10)
    # policy_unpack_test_unpack_array_with_name: pass:0 fail:1 skip:0 total:1

Add the missing endianness conversions when generating test data.

Fixes: 4d944bcd4e73 ("apparmor: add AppArmor KUnit tests for policy unpack")
Cc: Brendan Higgins <email address hidden>
Cc: Kees Cook <email address hidden>
Signed-off-by: Guenter Roeck <email address hidden>
Signed-off-by: Sasha Levin <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

dbea04a... by Ben Hutchings

scsi: aacraid: Fix double-free on probe failure

BugLink: https://bugs.launchpad.net/bugs/2080594

[ Upstream commit 919ddf8336f0b84c0453bac583808c9f165a85c2 ]

aac_probe_one() calls hardware-specific init functions through the
aac_driver_ident::init pointer, all of which eventually call down to
aac_init_adapter().

If aac_init_adapter() fails after allocating memory for aac_dev::queues,
it frees the memory but does not clear that member.

After the hardware-specific init function returns an error,
aac_probe_one() goes down an error path that frees the memory pointed to
by aac_dev::queues, resulting.in a double-free.

Reported-by: Michael Gordon <email address hidden>
Link: https://bugs.debian.org/1075855
Fixes: 8e0c5ebde82b ("[SCSI] aacraid: Newer adapter communication iterface support")
Signed-off-by: Ben Hutchings <email address hidden>
Link: https://<email address hidden>
Signed-off-by: Martin K. Petersen <email address hidden>
Signed-off-by: Sasha Levin <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

9b273f9... by Faizal Rahim <email address hidden>

igc: Fix qbv tx latency by setting gtxoffset

BugLink: https://bugs.launchpad.net/bugs/2080594

commit 6c3fc0b1c3d073bd6fc3bf43dbd0e64240537464 upstream.

A large tx latency issue was discovered during testing when only QBV was
enabled. The issue occurs because gtxoffset was not set when QBV is
active, it was only set when launch time is active.

The patch "igc: Correct the launchtime offset" only sets gtxoffset when
the launchtime_enable field is set by the user. Enabling launchtime_enable
ultimately sets the register IGC_TXQCTL_QUEUE_MODE_LAUNCHT (referred to as
LaunchT in the SW user manual).

Section 7.5.2.6 of the IGC i225/6 SW User Manual Rev 1.2.4 states:
"The latency between transmission scheduling (launch time) and the
time the packet is transmitted to the network is listed in Table 7-61."

However, the patch misinterprets the phrase "launch time" in that section
by assuming it specifically refers to the LaunchT register, whereas it
actually denotes the generic term for when a packet is released from the
internal buffer to the MAC transmit logic.

This launch time, as per that section, also implicitly refers to the QBV
gate open time, where a packet waits in the buffer for the QBV gate to
open. Therefore, latency applies whenever QBV is in use. TSN features such
as QBU and QAV reuse QBV, making the latency universal to TSN features.

Discussed with i226 HW owner (Shalev, Avi) and we were in agreement that
the term "launch time" used in Section 7.5.2.6 is not clear and can be
easily misinterpreted. Avi will update this section to:
"When TQAVCTRL.TRANSMIT_MODE = TSN, the latency between transmission
scheduling and the time the packet is transmitted to the network is listed
in Table 7-61."

Fix this issue by using igc_tsn_is_tx_mode_in_tsn() as a condition to
write to gtxoffset, aligning with the newly updated SW User Manual.

Tested:
1. Enrol taprio on talker board
   base-time 0
   cycle-time 1000000
   flags 0x2
   index 0 cmd S gatemask 0x1 interval1
   index 0 cmd S gatemask 0x1 interval2

   Note:
   interval1 = interval for a 64 bytes packet to go through
   interval2 = cycle-time - interval1

2. Take tcpdump on listener board

3. Use udp tai app on talker to send packets to listener

4. Check the timestamp on listener via wireshark

Test Result:
100 Mbps: 113 ~193 ns
1000 Mbps: 52 ~ 84 ns
2500 Mbps: 95 ~ 223 ns

Note that the test result is similar to the patch "igc: Correct the
launchtime offset".

Fixes: 790835fcc0cb ("igc: Correct the launchtime offset")
Signed-off-by: Faizal Rahim <email address hidden>
Reviewed-by: Simon Horman <email address hidden>
Acked-by: Vinicius Costa Gomes <email address hidden>
Tested-by: Mor Bar-Gabay <email address hidden>
Signed-off-by: Tony Nguyen <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

86d5f51... by Faizal Rahim <email address hidden>

igc: Fix reset adapter logics when tx mode change

BugLink: https://bugs.launchpad.net/bugs/2080594

commit 0afeaeb5dae86aceded0d5f0c3a54d27858c0c6f upstream.

Following the "igc: Fix TX Hang issue when QBV Gate is close" changes,
remaining issues with the reset adapter logic in igc_tsn_offload_apply()
have been observed:

1. The reset adapter logics for i225 and i226 differ, although they should
   be the same according to the guidelines in I225/6 HW Design Section
   7.5.2.1 on software initialization during tx mode changes.
2. The i225 resets adapter every time, even though tx mode doesn't change.
   This occurs solely based on the condition igc_is_device_id_i225() when
   calling schedule_work().
3. i226 doesn't reset adapter for tsn->legacy tx mode changes. It only
   resets adapter for legacy->tsn tx mode transitions.
4. qbv_count introduced in the patch is actually not needed; in this
   context, a non-zero value of qbv_count is used to indicate if tx mode
   was unconditionally set to tsn in igc_tsn_enable_offload(). This could
   be replaced by checking the existing register
   IGC_TQAVCTRL_TRANSMIT_MODE_TSN bit.

This patch resolves all issues and enters schedule_work() to reset the
adapter only when changing tx mode. It also removes reliance on qbv_count.

qbv_count field will be removed in a future patch.

Test ran:

1. Verify reset adapter behaviour in i225/6:
   a) Enrol a new GCL
      Reset adapter observed (tx mode change legacy->tsn)
   b) Enrol a new GCL without deleting qdisc
      No reset adapter observed (tx mode remain tsn->tsn)
   c) Delete qdisc
      Reset adapter observed (tx mode change tsn->legacy)

2. Tested scenario from "igc: Fix TX Hang issue when QBV Gate is closed"
   to confirm it remains resolved.

Fixes: 175c241288c0 ("igc: Fix TX Hang issue when QBV Gate is closed")
Signed-off-by: Faizal Rahim <email address hidden>
Reviewed-by: Simon Horman <email address hidden>
Acked-by: Vinicius Costa Gomes <email address hidden>
Tested-by: Mor Bar-Gabay <email address hidden>
Signed-off-by: Tony Nguyen <email address hidden>
[ Only want the igc_tsn_is_tx_mode_in_tsn() portion of this for older stable
  kernels - gregkh ]
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

a829105... by Sean Anderson <email address hidden>

phy: zynqmp: Enable reference clock correctly

BugLink: https://bugs.launchpad.net/bugs/2080594

commit 687d6bccb28238fcfa65f7c1badfdfeac498c428 upstream.

Lanes can use other lanes' reference clocks, as determined by refclk.
Use refclk to determine the clock to enable/disable instead of always
using the lane's own reference clock. This ensures the clock selected in
xpsgtr_configure_pll is the one enabled.

For the other half of the equation, always program REF_CLK_SEL even when
we are selecting the lane's own clock. This ensures that Linux's idea of
the reference clock matches the hardware. We use the "local" clock mux
for this instead of going through the ref clock network.

Fixes: 25d700833513 ("phy: xilinx: phy-zynqmp: dynamic clock support for power-save")
Signed-off-by: Sean Anderson <email address hidden>
Link: https://<email address hidden>
Signed-off-by: Vinod Koul <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

5039f0e... by Pawel Laszczak <email address hidden>

usb: cdnsp: fix for Link TRB with TC

BugLink: https://bugs.launchpad.net/bugs/2080594

commit 740f2e2791b98e47288b3814c83a3f566518fed2 upstream.

Stop Endpoint command on LINK TRB with TC bit set to 1 causes that
internal cycle bit can have incorrect state after command complete.
In consequence empty transfer ring can be incorrectly detected
when EP is resumed.
NOP TRB before LINK TRB avoid such scenario. Stop Endpoint command
is then on NOP TRB and internal cycle bit is not changed and have
correct value.

Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
cc: <email address hidden>
Signed-off-by: Pawel Laszczak <email address hidden>
Reviewed-by: Peter Chen <email address hidden>
Link: https://<email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

03971c1... by Pawel Laszczak <email address hidden>

usb: cdnsp: fix incorrect index in cdnsp_get_hw_deq function

BugLink: https://bugs.launchpad.net/bugs/2080594

commit 0497a356d3c498221eb0c1edc1e8985816092f12 upstream.

Patch fixes the incorrect "stream_id" table index instead of
"ep_index" used in cdnsp_get_hw_deq function.

Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver")
cc: <email address hidden>
Signed-off-by: Pawel Laszczak <email address hidden>
Reviewed-by: Peter Chen <email address hidden>
Link: https://<email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>

c20b590... by Zijun Hu <email address hidden>

usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()

BugLink: https://bugs.launchpad.net/bugs/2080594

commit 3a8839bbb86da7968a792123ed2296d063871a52 upstream.

Device attribute group @usb3_hardware_lpm_attr_group is merged by
add_power_attributes(), but it is not unmerged explicitly, fixed by
unmerging it in remove_power_attributes().

Fixes: 655fe4effe0f ("usbcore: add sysfs support to xHCI usb3 hardware LPM")
Cc: <email address hidden>
Signed-off-by: Zijun Hu <email address hidden>
Link: https://<email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
Signed-off-by: Koichiro Den <email address hidden>
Signed-off-by: Stefan Bader <email address hidden>