Commit graph

1058066 commits

Author SHA1 Message Date
Naohiro Aota
eb66a010d5 btrfs: zoned: activate new block group
Activate new block group at btrfs_make_block_group(). We do not check the
return value. If failed, we can try again later at the actual extent
allocation phase.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
2e654e4bb9 btrfs: zoned: activate block group on allocation
Activate a block group when trying to allocate an extent from it. We check
read-only case and no space left case before trying to activate a block
group not to consume the number of active zones uselessly.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
68a384b5ab btrfs: zoned: load active zone info for block group
Load activeness of underlying zones of a block group. When underlying zones
are active, we add the block group to the fs_info->zone_active_bgs list.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
afba2bc036 btrfs: zoned: implement active zone tracking
Add zone_is_active flag to btrfs_block_group. This flag indicates the
underlying zones are all active. Such zone active block groups are tracked
by fs_info->active_bg_list.

btrfs_dev_{set,clear}_active_zone() take responsibility for the underlying
device part. They set/clear the bitmap to indicate zone activeness and
count the number of zones we can activate left.

btrfs_zone_{activate,finish}() take responsibility for the logical part and
the list management. In addition, btrfs_zone_finish() wait for any writes
on it and send REQ_OP_ZONE_FINISH to the zone.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
dafc340dbd btrfs: zoned: introduce physical_map to btrfs_block_group
We will use a block group's physical location to track active zones and
finish fully written zones in the following commits. Since the zone
activation is done in the extent allocation context which already holding
the tree locks, we can't query the chunk tree for the physical locations.
So, copy the location info into a block group and use it for activation.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
ea6f8ddcde btrfs: zoned: load active zone information from devices
The ZNS specification defines a limit on the number of zones that can be in
the implicit open, explicit open or closed conditions. Any zone with such
condition is defined as an active zone and correspond to any zone that is
being written or that has been only partially written. If the maximum
number of active zones is reached, we must either reset or finish some
active zones before being able to chose other zones for storing data.

Load queue_max_active_zones() and track the number of active zones left on
the device.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
8376d9e1ed btrfs: zoned: finish superblock zone once no space left for new SB
If there is no more space left for a new superblock in a superblock zone,
then it is better to ZONE_FINISH the zone and frees up the active zone
count.

Since btrfs_advance_sb_log() can now issue REQ_OP_ZONE_FINISH, we also need
to convert it to return int for the error case.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
9658b72ef3 btrfs: zoned: locate superblock position using zone capacity
sb_write_pointer() returns the write position of next superblock. For READ,
we need a previous location. When the pointer is at the head, the previous
one is the last one of the other zone. Calculate the last one's position
from zone capacity.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
5daaf552d1 btrfs: zoned: consider zone as full when no more SB can be written
We cannot write beyond zone capacity. So, we should consider a zone as
"full" when the write pointer goes beyond capacity - the size of super
info.

Also, take this opportunity to replace a subtle duplicated code with a loop
and fix a typo in comment.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
d8da0e8567 btrfs: zoned: tweak reclaim threshold for zone capacity
With the introduction of zone capacity, the range [capacity, length] is
always zone unusable. Counting this region as a reclaim target will
cause reclaiming too early. Reclaim block groups based on bytes that can
be usable after resetting.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:59 +02:00
Naohiro Aota
98173255bd btrfs: zoned: calculate free space from zone capacity
Now that we introduced capacity in a block group, we need to calculate free
space using the capacity instead of the length. Thus, bytes we account
capacity - alloc_pointer as free, and account bytes [capacity, length] as
zone unusable.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:58 +02:00
Naohiro Aota
c46c4247ab btrfs: zoned: move btrfs_free_excluded_extents out of btrfs_calc_zone_unusable
btrfs_free_excluded_extents() is not neccessary for
btrfs_calc_zone_unusable() and it makes btrfs_calc_zone_unusable()
difficult to reuse. Move it out and call btrfs_free_excluded_extents()
in proper context.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:58 +02:00
Naohiro Aota
8eae532be7 btrfs: zoned: load zone capacity information from devices
The ZNS specification introduces the concept of a Zone Capacity.  A zone
capacity is an additional per-zone attribute that indicates the number of
usable logical blocks within each zone, starting from the first logical
block of each zone. It is always smaller or equal to the zone size.

With the SINGLE profile, we can set a block group's "capacity" as the same
as the underlying zone's Zone Capacity. We will limit the allocation not
to exceed in a following commit.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:58 +02:00
Qu Wenruo
c22a3572cb btrfs: defrag: enable defrag for subpage case
With the new infrastructure which has taken subpage into consideration,
now we should be safe to allow defrag to work for subpage case.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:58 +02:00
Qu Wenruo
c635757365 btrfs: defrag: remove the old infrastructure
Now the old infrastructure can all be removed, defrag

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:58 +02:00
Qu Wenruo
7b508037d4 btrfs: defrag: use defrag_one_cluster() to implement btrfs_defrag_file()
The function defrag_one_cluster() is able to defrag one range well
enough, we only need to do preparation for it, including:

- Clamp and align the defrag range
- Exclude invalid cases
- Proper inode locking

The old infrastructures will not be removed in this patch, as it would
be too noisy to review.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:58 +02:00
Qu Wenruo
b18c3ab234 btrfs: defrag: introduce helper to defrag one cluster
This new helper, defrag_one_cluster(), will defrag one cluster (at most
256K):

- Collect all initial targets

- Kick in readahead when possible

- Call defrag_one_range() on each initial target
  With some extra range clamping.

- Update @sectors_defragged parameter

This involves one behavior change, the defragged sectors accounting is
no longer as accurate as old behavior, as the initial targets are not
consistent.

We can have new holes punched inside the initial target, and we will
skip such holes later.
But the defragged sectors accounting doesn't need to be that accurate
anyway, thus I don't want to pass those extra accounting burden into
defrag_one_range().

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:57 +02:00
Qu Wenruo
e9eec72151 btrfs: defrag: introduce helper to defrag a range
A new helper, defrag_one_range(), is introduced to defrag one range.

This function will mostly prepare the needed pages and extent status for
defrag_one_locked_target().

As we can only have a consistent view of extent map with page and extent
bits locked, we need to re-check the range passed in to get a real
target list for defrag_one_locked_target().

Since defrag_collect_targets() will call defrag_lookup_extent() and lock
extent range, we also need to teach those two functions to skip extent
lock.  Thus new parameter, @locked, is introduced to skip extent lock if
the caller has already locked the range.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:57 +02:00
Qu Wenruo
22b398eeee btrfs: defrag: introduce helper to defrag a contiguous prepared range
A new helper, defrag_one_locked_target(), introduced to do the real part
of defrag.

The caller needs to ensure both page and extents bits are locked, and no
ordered extent exists for the range, and all writeback is finished.

The core defrag part is pretty straight-forward:

- Reserve space
- Set extent bits to defrag
- Update involved pages to be dirty

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:07:13 +02:00
Qu Wenruo
eb793cf857 btrfs: defrag: introduce helper to collect target file extents
Introduce a helper, defrag_collect_targets(), to collect all possible
targets to be defragged.

This function will not consider things like max_sectors_to_defrag, thus
caller should be responsible to ensure we don't exceed the limit.

This function will be the first stage of later defrag rework.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:06:53 +02:00
Qu Wenruo
5767b50c00 btrfs: defrag: factor out page preparation into a helper
In cluster_pages_for_defrag(), we have complex code block inside one
for() loop.

The code block is to prepare one page for defrag, this will ensure:

- The page is locked and set up properly.
- No ordered extent exists in the page range.
- The page is uptodate.

This behavior is pretty common and will be reused by later defrag
rework.

So factor out the code into its own helper, defrag_prepare_one_page(),
for later usage, and cleanup the code by a little.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:06:34 +02:00
Qu Wenruo
76068cae63 btrfs: defrag: replace hard coded PAGE_SIZE with sectorsize
When testing subpage defrag support, I always find some strange inode
nbytes error, after a lot of debugging, it turns out that
defrag_lookup_extent() is using PAGE_SIZE as size for
lookup_extent_mapping().

Since lookup_extent_mapping() is calling __lookup_extent_mapping() with
@strict == 1, this means any extent map smaller than one page will be
ignored, prevent subpage defrag to grab a correct extent map.

There are quite some PAGE_SIZE usage in ioctl.c, but most of them are
correct usages, and can be one of the following cases:

- ioctl structure size check
  We want ioctl structure to be contained inside one page.

- real page operations

The remaining cases in defrag_lookup_extent() and
check_defrag_in_cache() will be addressed in this patch.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:06:15 +02:00
Qu Wenruo
cae7968680 btrfs: defrag: also check PagePrivate for subpage cases in cluster_pages_for_defrag()
In function cluster_pages_for_defrag() we have a window where we unlock
page, either start the ordered range or read the content from disk.

When we re-lock the page, we need to make sure it still has the correct
page->private for subpage.

Thus add the extra PagePrivate check here to handle subpage cases
properly.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:05:18 +02:00
Qu Wenruo
1ccc2e8a86 btrfs: defrag: pass file_ra_state instead of file to btrfs_defrag_file()
Currently btrfs_defrag_file() accepts both "struct inode" and "struct
file" as parameter.  We can easily grab "struct inode" from "struct
file" using file_inode() helper.

The reason why we need "struct file" is just to re-use its f_ra.

Change this to pass "struct file_ra_state" parameter, so that it's more
clear what we really want.  Since we're here, also add some comments on
the function btrfs_defrag_file().

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:04:39 +02:00
Anand Jain
a09f23c355 btrfs: rename and switch to bool btrfs_chunk_readonly
btrfs_chunk_readonly() checks if the given chunk is writeable. It
returns 1 for readonly, and 0 for writeable. So the return argument type
bool shall suffice instead of the current type int.

Also, rename btrfs_chunk_readonly() to btrfs_chunk_writeable() as we
check if the bg is writeable, and helps to keep the logic at the parent
function simpler to understand.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:03:57 +02:00
Sidong Yang
44bee215f7 btrfs: reflink: initialize return value to 0 in btrfs_extent_same()
Fix a warning reported by smatch that ret could be returned without
initialized.  The dedupe operations are supposed to to return 0 for a 0
length range but the caller does not pass olen == 0. To keep this
behaviour and also fix the warning initialize ret to 0.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Sidong Yang <realwakka@gmail.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:03:57 +02:00
Qu Wenruo
72a69cd030 btrfs: subpage: pack all subpage bitmaps into a larger bitmap
Currently we use u16 bitmap to make 4k sectorsize work for 64K page
size.

But this u16 bitmap is not large enough to contain larger page size like
128K, nor is space efficient for 16K page size.

To handle both cases, here we pack all subpage bitmaps into a larger
bitmap, now btrfs_subpage::bitmaps[] will be the ultimate bitmap for
subpage usage.

Each sub-bitmap will has its start bit number recorded in
btrfs_subpage_info::*_start, and its bitmap length will be recorded in
btrfs_subpage_info::bitmap_nr_bits.

All subpage bitmap operations will be converted from using direct u16
operations to bitmap operations, with above *_start calculated.

For 64K page size with 4K sectorsize, this should not cause much
difference.

While for 16K page size, we will only need 1 unsigned long (u32) to
store all the bitmaps, which saves quite some space.

Furthermore, this allows us to support larger page size like 128K and
258K.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2021-10-26 19:03:55 +02:00
Saurav Girepunje
3d34b18032 staging: r8188eu: core: remove the goto from rtw_IOL_accquire_xmit_frame
Remove the goto statement from rtw_IOL_accquire_xmit_frame(). In this
function goto can be replace by return statement. As on goto label
exit, function only return it is not performing any cleanup. Avoiding
goto will improve the function readability.

Remove the assignment of NULL to local variable xmit_frame just before
return of function. As function return, local variable will be not
available on memory. So assigning a NULL value to local variable just
before function return does not required.

Signed-off-by: Saurav Girepunje <saurav.girepunje@gmail.com>
Link: https://lore.kernel.org/r/YXd8QdhiNX3B1nqe@Sauravs-MacBook-Air.local
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:46:21 +02:00
Saurav Girepunje
b6f8bd6812 staging: r8188eu: core: remove goto statement
Remove the goto statement from rtw_do_join(). In this function goto
can be replace by return statement. As on goto label exit, function only
return it is not performing any cleanup. Avoiding goto will improve
the function readability.

Signed-off-by: Saurav Girepunje <saurav.girepunje@gmail.com>
Link: https://lore.kernel.org/r/YXafzp5F8T7/+tk2@Sauravs-MacBook-Air.local
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:41 +02:00
Karolina Drobnik
f3d90f5139 staging: vt6655: Rename dwAL7230InitTable array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL7230InitTable>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/4e78c4628ba75d9793bd8a60d69a1b0cc4d2a073.1635171519.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:09 +02:00
Karolina Drobnik
01701302a2 staging: vt6655: Rename dwAL2230PowerTable array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL2230PowerTable>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/69eb06ced0d039b238c1ab6d3fb70b5ee1288a8a.1635171519.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:09 +02:00
Karolina Drobnik
267062a6c9 staging: vt6655: Rename dwAL7230InitTableAMode array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL7230InitTableAMode>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/bd97b801861fac2168625c3e4ea1f97b9960e962.1635171519.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:09 +02:00
Karolina Drobnik
787f48d7ad staging: vt6655: Rename dwAL7230ChannelTable2 array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL7230ChannelTable2>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/055bde0a3206573209b757a22ab150c02f50f007.1635171519.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:09 +02:00
Karolina Drobnik
913d3e9ec3 staging: vt6655: Rename dwAL7230ChannelTable1 array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL7230ChannelTable1>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/bd3e987e975add4a4c1ce6f679d2b0c2b8ff05d9.1635171519.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:08 +02:00
Karolina Drobnik
b9b419af41 staging: vt6655: Rename dwAL7230ChannelTable0 array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL7230ChannelTable0>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/c05a9a1928e84cbbf375f1bfb2dd2ba31438c842.1635171518.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:08 +02:00
Karolina Drobnik
5898832fb9 staging: vt6655: Rename dwAL2230ChannelTable1 array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL2230ChannelTable1>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/18e1857c02edd1dbc81ef7e5b00e42e7cbce4710.1635171518.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:08 +02:00
Karolina Drobnik
0869b73f61 staging: vt6655: Rename dwAL2230ChannelTable0 array
To align with the kernel coding style, remove the type from
the variable name and do not use CamelCase.

Fix issue detected by checkpatch.pl:
  CHECK: Avoid CamelCase: <dwAL2230ChannelTable0>

Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com>
Link: https://lore.kernel.org/r/6232fd38f5e803dc01d528a76dd16fcce74ff9bd.1635171518.git.karolinadrobnik@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:45:08 +02:00
Johan Hovold
ce4940525f staging: r8712u: fix control-message timeout
USB control-message timeouts are specified in milliseconds and should
specifically not vary with CONFIG_HZ.

Fixes: 2865d42c78 ("staging: r8712u: Add the new driver to the mainline kernel")
Cc: stable@vger.kernel.org      # 2.6.37
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20211025120910.6339-3-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:44:38 +02:00
Johan Hovold
4cfa36d312 staging: rtl8192u: fix control-message timeouts
USB control-message timeouts are specified in milliseconds and should
specifically not vary with CONFIG_HZ.

Fixes: 8fc8598e61 ("Staging: Added Realtek rtl8192u driver to staging")
Cc: stable@vger.kernel.org      # 2.6.33
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20211025120910.6339-2-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-10-26 18:44:38 +02:00
Geert Uytterhoeven
4bf74f8e56
ASoC: amd: acp: SND_SOC_AMD_ACP_COMMON should depend on X86 && PCI
All configuration symbols for AMD Audio ACP conponents depend on X86 &&
PCI, except for SND_SOC_AMD_ACP_COMMON.  Add a dependency on X86 && PCI
to SND_SOC_AMD_ACP_COMMON, to prevent asking the user about AMD Audio
ACP support when configuring a kernel without X86 or PCI support.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/30fcedce513186bf89f1f2655b665298250fdc66.1635260849.git.geert+renesas@glider.be
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-10-26 17:32:04 +01:00
Geert Uytterhoeven
f31c939973
ASoC: amd: acp: SND_SOC_AMD_{LEGACY_MACH,SOF_MACH} should depend on X86 && PCI && I2C
If not all of CONFIG_X86, CONFIG_PCI, and CONFIG_I2C are set:

    WARNING: unmet direct dependencies detected for SND_SOC_AMD_MACH_COMMON
      Depends on [n]: SOUND [=y] && !UML && SND [=y] && SND_SOC [=y] && X86 && PCI [=y] && I2C [=y]
      Selected by [y]:
      - SND_SOC_AMD_LEGACY_MACH [=y] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=y]
      - SND_SOC_AMD_SOF_MACH [=y] && SOUND [=y] && !UML && SND [=y] && SND_SOC [=y]

As SND_SOC_AMD_MACH_COMMON depends on X86 && PCI && I2C, all symbols
selecting it should depend on X86 && PCI && I2C, too.

Fixes: 9d8a7be88b ("ASoC: amd: acp: Add legacy sound card support for Chrome audio")
Fixes: 9f84940f50 ("ASoC: amd: acp: Add SOF audio support on Chrome board")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/dfb03bd33117e26f3f04ce227bb28095109b3d80.1635260849.git.geert+renesas@glider.be
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-10-26 17:32:03 +01:00
Geert Uytterhoeven
f41d2ece95
ASoC: amd: acp: Wrap AMD Audio ACP components in SND_SOC_AMD_ACP_COMMON
The build only descends into sound/soc/amd/acp/ if
CONFIG_SND_SOC_AMD_ACP_COMMON=y.  Hence all later config symbols should
depend on SND_SOC_AMD_ACP_COMMON, to prevent asking the user about
config symbols for driver code that won't be build anyway.

Fixes: 623621a9f9 ("ASoC: amd: Add common framework to support I2S on ACP SOC")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/53d1d63bed1865293e6f5085ead21cdbb068fb15.1635260849.git.geert+renesas@glider.be
Signed-off-by: Mark Brown <broonie@kernel.org>
2021-10-26 17:32:02 +01:00
Arnd Bergmann
02d44fde97 drm/msm/dp: fix missing #include
Some randconfig builds fail when drm/drm_bridge.h is not included
implicitly in this file:

drivers/gpu/drm/msm/dp/dp_parser.c:279:25: error: implicit declaration of function 'devm_drm_panel_bridge_add' [-Werror,-Wimplicit-function-declaration]
        parser->panel_bridge = devm_drm_panel_bridge_add(dev, panel);

Fixes: 4b296d15b3 ("drm/msm/dp: Allow attaching a drm_panel")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20211026083254.3396322-1-arnd@kernel.org
Signed-off-by: Rob Clark <robdclark@chromium.org>
2021-10-26 09:31:24 -07:00
Nathan Chancellor
e9afd45788 drm/msm/dpu: Remove commit and its uses in dpu_crtc_set_crc_source()
Clang warns:

drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c:162:6: error: variable 'commit' is uninitialized when used here [-Werror,-Wuninitialized]
        if (commit)
            ^~~~~~
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c:106:32: note: initialize the variable 'commit' to silence this warning
        struct drm_crtc_commit *commit;
                                      ^
                                       = NULL
1 error generated.

The assignment and use of commit in the main body of
dpu_crtc_set_crc_source() were removed from v1 to v2 but the call to
drm_crtc_commit_put() at the end was not. Do that now so there is no
more warning.

Fixes: 78d9b458cc ("drm/msm/dpu: Add CRC support for DPU")
Link: https://github.com/ClangBuiltLinux/linux/issues/1493
Reported-by: "kernelci.org bot" <bot@kernelci.org>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20211026142435.3606413-1-nathan@kernel.org
Signed-off-by: Rob Clark <robdclark@chromium.org>
2021-10-26 09:29:54 -07:00
Jeff Layton
482e00075d fs: remove leftover comments from mandatory locking removal
Stragglers from commit f7e33bdbd6 ("fs: remove mandatory file locking
support").

Signed-off-by: Jeff Layton <jlayton@kernel.org>
2021-10-26 12:20:50 -04:00
Arnd Bergmann
fa348938db Qualcomm ARM64 defconfig updates for v5.16
The major change here is the disabling of the firmware loades user space
 fallback, this is done as arm64 is the only platform with this flag
 enabled and as a result doesn't play nice with standard distributions.
 
 It then enables the new limits driver, which controls the hardware based
 thermal mitigation on a range of Qualcomm platforms. The prima/pronto
 WiFi and Bluetooth drivers are enabled to ensure these features works
 out of the box, now that the last details in the dts are landed.
 
 The new driver for acquiring sleep stats is enabled to facilitate the
 various efforts on getting these platforms into low power mode.
 
 Lastly the base SC7280 drivers needed to simply boot this platform are
 enabled.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmF4BzsbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FP+4QANBsizO+Cgzm7x4hYjzc
 vgLsa5qzgIEhjcDrCrRZe91HkzeE5HnzkKGWUMi+JO4SOTGeCYZf+txm012Tjtnv
 w8kFbRMY3OxfAijM00euSIKxIGjM3aKq7UJ4qplDXSKVhVzqlsHjFhaGBzT/CMcW
 3ViSinJiXuCQ2+5R6hW5FeNkGx9nhqd1nBGNvBaZuMRJcpyEe6AHx56eHC2R6hRh
 +1Rt+Eu5rawnA5MDpkHoso+OtBi36Rr++GMHLy11XoPABjXscgKIfGZOl4hk8KJe
 eDZdnV9DT9bUu3Ozdz+jkYSzdo00K+ZtB+0n8JmDvON0nhQp8otll/2BdRoZ3JpB
 eFwNyRFlLTHpKPp5mcPh9Xe7BfEpz/FqdTwz35hmlGe2n98q61Lny6/XcF85TFc6
 LzqHcftkgHzvPaWPbOpJ1MZ+XFOrGD2w5/pEYDOmjoeicWQh587+RUXI1TzkdVes
 klVzc4klUYw50a31LNILO9UfGDdB7lupBe1/kQOHUR1NPn6oBMKhNIGDdNx1VXZA
 BM2Kb9JEhwYLelw8lmyHz1waOK1ik2JFtClwmfVqLkq37FpcS0V66P2XugiuZgeA
 /ZUSTB0Pa1XMlJqcyFPFoHj/DnTDBsFDb8HxxAHTIh/YfK/iFf0iBuJ1t0VbTc4w
 v5P+oj/ZSZxdWJz5ls92FIlI
 =xuCz
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmF4Ke4ACgkQmmx57+YA
 GNnufw/9GcUKYHyndGW1GnTeWB69G0ghYtaVwrsertmAhBzwjKq15jecF1CqosGe
 G6SKKFRLXUoaB1ilxwHeo8qC5DG0R4Y9FMYD2/e+/nAQZLEe+7dbvlYQMU2ctqgH
 bfg0M9HPVIVDNlH0d1Z+xFgQClTQ2twZmYKxyj8W+sKpZpx5JXtg5nbN+Gf1JbSr
 yWPIQTol86VkMXK7ASP4BtBm5xm2PEOvplrRgjo1owV63fuhaPGk9qtz3YyI6uRC
 qq543MHGGiHSv4mytn5BjmAosSf7XTiyj2Bv5EPSqzFz0cdu82NyAMncoqu5NFCB
 6wHRljVB5nxJhQBF0Zp6T1cAVjVEjPyC6z0H2DkTVtfoh8Fpr36qTtgQ2xERLMTR
 ZLJhYOzMFGVK/ljT4Vpngd5y4stYcWmA/hToKzkeyCbYQ21DPEpO7GHH0Jqo0mTZ
 QR62awi9lzNpkbLa/uqbhE71sXAmILmqXHX1VUN27KbiOIfrCI6I3EK1dR7GKwdD
 7VgKAa/EE17aTt3Ce9ihBUpvwTzDt233AIHaNSyt2IB3CanVdv5DSIFap3FSHxPL
 ij1EYbQyeO3RDQtNsVFx1pJc043T6vp/TTmtYvvxkswZ4BHSjsv9PW3UpmMa7C4/
 uW3p94NaeqQ8dG4YO1x1tpvSsdxgrnAFHhkItSjyV6Q7Ay+5AOw=
 =DfL5
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-defconfig-for-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/defconfigs

Qualcomm ARM64 defconfig updates for v5.16

The major change here is the disabling of the firmware loades user space
fallback, this is done as arm64 is the only platform with this flag
enabled and as a result doesn't play nice with standard distributions.

It then enables the new limits driver, which controls the hardware based
thermal mitigation on a range of Qualcomm platforms. The prima/pronto
WiFi and Bluetooth drivers are enabled to ensure these features works
out of the box, now that the last details in the dts are landed.

The new driver for acquiring sleep stats is enabled to facilitate the
various efforts on getting these platforms into low power mode.

Lastly the base SC7280 drivers needed to simply boot this platform are
enabled.

* tag 'qcom-arm64-defconfig-for-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  arm64: defconfig: Enable Qualcomm LMH driver
  arm64: defconfig: Enable Qualcomm prima/pronto drivers
  arm64: defconfig: Enable Sleep stats driver
  arm64: defconfig: Enable QTI SC7280 pinctrl, gcc and interconnect
  arm64: defconfig: Disable firmware sysfs fallback

Link: https://lore.kernel.org/r/20211026134953.1204327-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-10-26 18:16:46 +02:00
Arnd Bergmann
9271fccb00 Qualcomm DTS more changes for v5.16
The multi-purpose-pin (MPP) driver is finally migrated to use
 hierarchical IRQ domains, so this bring the associated changes.
 
 The remainder of the changes are correcting binding issues, primarily
 found through DT validation.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmF4CXAbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FPqIP/RPVvP+G1L2Kb4Jn+b3K
 lwsUDKqQL185Mu/xAuv9vszXIglbCJ3fNSTqk479rCG+jgyP9eVz3uba2m6uiYPy
 tKG9W4o/E7uG6RD8A8QjBWsFnv5TvnDiwdWRj8hZiFpRntLV+dt6PgLGI6s6mEij
 RpbTLqUoNsI2gxRmTs8sV7L6tXHTPDqhSeJKnAKk6xsclm1gdHtPOGMY881fAgCj
 dkh0YhXQTCMN1EG3UTAHcrpy+qSPzfV75OMGk6IeIae8XreyjeT1Kdq33psbelFb
 dDvdWjvXMgMN2fWzIHL9iqLKyvA5yQAJ7cFTIoKJMnfUCCaO/d72GC9qsQIr0477
 KwtMJsJmX2kKGCejpWCDud0jquVczFQcX6b4tUlgFUdncWR8WKdHQ29y6bQ/8CKR
 zlRpvOuwhI6ndGuh1uaSt0ZVwPh+eRLi+C7Q/MsiAGyfepcPyxRw15y/8WolUT/W
 HBaMsjy0pBQmKO5VgtN9GJOwcUKHmmvfUp4Ca796/C5RqIRqaI63cypjRm1xQgJn
 WbwYC8Hap6Z2fMsEpNeLq0GHyMjN0fiPnllNL2JT0G6ophvRDYr6d61ZoMeaC5n7
 evnpe6dlPY6+X1JDg8VQTQ2sF7sevVJVxDj3sKCP+9lboK5SkeXuRySFMojeE5U0
 kdFq9kqB7G5UewfgWZolSbAr
 =y90Y
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmF4KWoACgkQmmx57+YA
 GNlZbA//V1yJHScwHplELFfXxcYbGsk/JE7F9S22bjFXsKP8UEG+YICE5xG64IeY
 gpIjI2ZmXv6udblUCQUjn1h2VMDFuGxg5b8TopSZTJZJkD50h8dKP8xEfYjSaQYC
 /beNQJwfNLtIhNr8pX7dV/JOwH+Htty9Gts0mVn8UsK7CJDuYlRA85TomFOq/RII
 IRDuiDR2iASGqLd/s2uITtuTmBn2TD6jsxqfbAxcGD+lf9nQpqFiJJ1P96Pij2x+
 WxEzjrVznQgs/hQkY8RMMJhERehSA4l5MbUz6c5PdgxX3Ig5drfyUKuLDpVWqCGP
 bqKuMvw738LTZilTPbx6TaUcUe4p42D+4Sml7bL2N/hvTUwbjHKpXZTmAxvMy6D/
 6ouMvv/bMTtK0ISlpYWbBhGvmAV/ED9yPes26AiQSzkjbSHGoye8jBEzeBL/Rq9U
 OpkTwwUdERnomXL5KyTE2etZA0ssHoqFasJmuihmKAuqSpDE0cSUoARKxxkALzt3
 15gVRTHZD28HLqaR98H3MCefp2MK+xMH1FB7nGBBP07IuTB50mJOkDzD5qHL5KFb
 gMXkOulZRYdRSXGq1mpFrkpDjkZSTcvlIDLYl2iVmUGAKUgGTw3FU+FvWCJaoTTk
 5dQYL5vZTLbsMAijK2SzejpCxjh3P+R28VuBcTTpbwjfJcLH25E=
 =ZbB+
 -----END PGP SIGNATURE-----

Merge tag 'qcom-dts-for-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt

Qualcomm DTS more changes for v5.16

The multi-purpose-pin (MPP) driver is finally migrated to use
hierarchical IRQ domains, so this bring the associated changes.

The remainder of the changes are correcting binding issues, primarily
found through DT validation.

* tag 'qcom-dts-for-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (26 commits)
  ARM: dts: qcom: fix typo in IPQ8064 thermal-sensor node
  ARM: dts: qcom: fix thermal zones naming
  ARM: dts: qcom: fix flash node naming for RB3011
  ARM: dts: qcom: correct mmc node naming
  ARM: dts: qcom: fix memory and mdio nodes naming for RB3011
  dt-bindings: arm: qcom: Fix Nexus 4 vendor prefix
  ARM: dts: ipq4019-ap.dk01.1-c1: add device compatible in the dts
  dt-bindings: arm: qcom-ipq4019: add missing device compatible
  ARM: dts: qcom: apq8026-lg-lenok: rename board vendor
  dt-bindings: arm: qcom: rename vendor of apq8026-lenok
  ARM: dts: qcom: sdx55: Drop '#clock-cells' from QMP PHY node
  ARM: dts: qcom: mdm9615: fix memory node for Sierra Wireless WP8548
  ARM: dts: qcom-pma8084: add interrupt controller properties
  ARM: dts: qcom-pm8941: add interrupt controller properties
  ARM: dts: qcom-pm8841: add interrupt controller properties
  ARM: dts: qcom-msm8660: add interrupt controller properties
  ARM: dts: qcom-mdm9615: add interrupt controller properties
  ARM: dts: qcom-apq8064: add interrupt controller properties
  ARM: dts: qcom-apq8060-dragonboard: fix mpps state names
  ARM: dts: qcom-mdm9615: add gpio-ranges to mpps node, fix its name
  ...

Link: https://lore.kernel.org/r/20211026135855.1205262-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-10-26 18:14:34 +02:00
Arnd Bergmann
f253fb365e Samsung DTS ARM64 changes for v5.16, part two
1. Add chassis-type property.
 2. Add ChipID node to ExynosAutov9 DTSI.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmF3zK8QHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD142wD/0Vli9+cSeu5p4GMqEHUJpqFmX18njwygBQ
 xGRIzgZrt/j0L0NfoiGUCpEbOVCuEW1h2+xYcw+yQAGvKgGVVI8ZTmrbWym/PDRt
 vLmFS4gOrF9+PmQahtDi7PjRiirzjROcVBqFAdQZWfCoWWJ8q1gdzkC2u0qq8ZBK
 NHARHL2a77DJqQ10NzCklhKxgLD13K2/JucG/j4qblZ4kCF0QwncoZ+cDyJsKpew
 uStSzwmMWlOS88S2ZtYPpCM1p2Hon1QdQHkb8Qa6ZUyT7jUF8XX3Ha+KO//cw8ig
 EZtaa6Wh30hyVPiETi9z/TNFpJm8fSUiwtkICY7As7wDsynfIwdFiTggKwvjJ0CF
 r0I/Q3/vopgcwzode02LLNJ/Oe/IgaVORSmDarY2susjglnmcPcC8G+LHJwCGHhT
 drQNaIeX7PR+kufB7JgMUzhMHDmfn+VWfNBgb6w4a2xcRxcgWa0+uz53enBl1Hu4
 zkXd0uSXQMeW6aijjm+ghJO0J1qPxUyVtn9Fia8dIgCZ/iBVHCH/3mw350Q4ObG1
 JSsAb45lS1I6YvvGNY5Dk6J67tB7b7XLgtnJqiAS1ToWXBT925EH8PnwM+a0qVCv
 9W37rr7kuQdelvfcN1O61qGGRCAIKyuYBtztxTUjEKwejO6fL0sPrERoJpy5+Rl6
 Rn9KZItYxg==
 =Q04S
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmF4KV4ACgkQmmx57+YA
 GNlaVBAApFaM4FouP5Ve6fmWegTCmwdmy9gdf3QlTWNMKw+gn4L1ad6Uf1ZbhSHW
 wiyv5p80Jq59KG9qQwVsbl3imLT8lRZdPRsMtmyq9DK2G+SNlSvdH4xG1f6lkwrw
 zne50smmguYYUpgdiB994KVec2YqVQKovpnSob8Coxjd/Bnxv4A1nuoAmMvS65CC
 BxZjxLDcfy1XkZo+SK2Ju0D5+PtJPZsluFMKz9VHvWyNnMvoZmiOMda7/q//pwix
 U0GzTK+9CZCCguSEF9TNf572FB4vuIAt23WdnvxIojh5yVaQuYT4bVotPH4+95xn
 z/5JfAI3zW3NAmE2a3ZmbLJLgJZfNUbWjln7NUcKzgFEXdonDpMQgKhXBGZwohAW
 EoZiS9ddQeNTpx/MyY2alEcgv2fq+iWneSvudQFSaG+7pvOFJLRRa/kK6ETh6wdF
 6bv56APOoeEpJ4JBHH7Px8VQkda2beOYkFWbUo/mYIc7gcsDrd9dkx5mKS9HqH53
 JJeqpq/GT1ytVvk7VM9oaeje+tjYELjy8uJkXVOXMr9WZ5LaRS+IxHzSxg6OSL6J
 ZLt8dcF1ZnFVcUiwZ/eJAZFCkUpy1gaHjRFhticZJQcqa3QdjDmpgWYixITS05Qh
 Yco08k2QvQ+NWzzRWKZt6GqN+B5pcb8T95eYQPd5JegAEMAocn8=
 =ah7o
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt64-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/dt

Samsung DTS ARM64 changes for v5.16, part two

1. Add chassis-type property.
2. Add ChipID node to ExynosAutov9 DTSI.

* tag 'samsung-dt64-5.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  arm64: dts: exynos: add chipid node for exynosautov9 SoC
  arm64: dts: exynos: add 'chassis-type' property

Link: https://lore.kernel.org/r/20211026094709.75692-4-krzysztof.kozlowski@canonical.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-10-26 18:14:22 +02:00
Len Baker
3577cdb23b docs: deprecated.rst: Clarify open-coded arithmetic with literals
Although using literals for size calculation in allocator arguments may
be harmless due to compiler warnings in case of overflows, it is better
to refactor the code to avoid the use of open-coded arithmetic.

So, clarify the preferred way in these cases.

Suggested-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Len Baker <len.baker@gmx.com>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/20210925143455.21221-1-len.baker@gmx.com
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2021-10-26 09:43:54 -06:00
Mauro Carvalho Chehab
6e74e68d0b scripts: documentation-file-ref-check: fix bpf selftests path
tools/testing/selftests/bpf/test_bpftool_synctypes.py use
relative patches on the top of BPFTOOL_DIR:

	BPFTOOL_DIR = os.path.join(LINUX_ROOT, 'tools/bpf/bpftool')

Change the script to automatically convert:

	testing/selftests/bpf -> bpf/bpftool

In order to properly check the files used by such script.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/49b765cbac6ccd22d627573154806ec9389d60f0.1634629094.git.mchehab+huawei@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
2021-10-26 09:42:29 -06:00