mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-20 12:13:27 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR (net-6.17-rc4). No conflicts. Adjacent changes: drivers/net/ethernet/intel/idpf/idpf_txrx.c02614eee26("idpf: do not linearize big TSO packets")6c4e684802("idpf: remove obsolete stashing code") Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -185,6 +185,7 @@ struct atmdev_ops { /* only send is required */
|
||||
int (*compat_ioctl)(struct atm_dev *dev,unsigned int cmd,
|
||||
void __user *arg);
|
||||
#endif
|
||||
int (*pre_send)(struct atm_vcc *vcc, struct sk_buff *skb);
|
||||
int (*send)(struct atm_vcc *vcc,struct sk_buff *skb);
|
||||
int (*send_bh)(struct atm_vcc *vcc, struct sk_buff *skb);
|
||||
int (*send_oam)(struct atm_vcc *vcc,void *cell,int flags);
|
||||
|
||||
@@ -656,6 +656,7 @@ enum {
|
||||
QUEUE_FLAG_SQ_SCHED, /* single queue style io dispatch */
|
||||
QUEUE_FLAG_DISABLE_WBT_DEF, /* for sched to disable/enable wbt */
|
||||
QUEUE_FLAG_NO_ELV_SWITCH, /* can't switch elevator any more */
|
||||
QUEUE_FLAG_QOS_ENABLED, /* qos is enabled */
|
||||
QUEUE_FLAG_MAX
|
||||
};
|
||||
|
||||
|
||||
@@ -288,14 +288,6 @@ static inline void *offset_to_ptr(const int *off)
|
||||
#define __ADDRESSABLE(sym) \
|
||||
___ADDRESSABLE(sym, __section(".discard.addressable"))
|
||||
|
||||
#define __ADDRESSABLE_ASM(sym) \
|
||||
.pushsection .discard.addressable,"aw"; \
|
||||
.align ARCH_SEL(8,4); \
|
||||
ARCH_SEL(.quad, .long) __stringify(sym); \
|
||||
.popsection;
|
||||
|
||||
#define __ADDRESSABLE_ASM_STR(sym) __stringify(__ADDRESSABLE_ASM(sym))
|
||||
|
||||
/*
|
||||
* This returns a constant expression while determining if an argument is
|
||||
* a constant expression, most importantly without evaluating the argument.
|
||||
|
||||
@@ -153,6 +153,9 @@ static inline void dma_free_contiguous(struct device *dev, struct page *page,
|
||||
{
|
||||
__free_pages(page, get_order(size));
|
||||
}
|
||||
static inline void dma_contiguous_early_fixup(phys_addr_t base, unsigned long size)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_DMA_CMA*/
|
||||
|
||||
#ifdef CONFIG_DMA_DECLARE_COHERENT
|
||||
|
||||
@@ -264,12 +264,7 @@ static inline bool iosys_map_is_set(const struct iosys_map *map)
|
||||
*/
|
||||
static inline void iosys_map_clear(struct iosys_map *map)
|
||||
{
|
||||
if (map->is_iomem) {
|
||||
map->vaddr_iomem = NULL;
|
||||
map->is_iomem = false;
|
||||
} else {
|
||||
map->vaddr = NULL;
|
||||
}
|
||||
memset(map, 0, sizeof(*map));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -160,7 +160,7 @@ size_t iterate_folioq(struct iov_iter *iter, size_t len, void *priv, void *priv2
|
||||
|
||||
do {
|
||||
struct folio *folio = folioq_folio(folioq, slot);
|
||||
size_t part, remain, consumed;
|
||||
size_t part, remain = 0, consumed;
|
||||
size_t fsize;
|
||||
void *base;
|
||||
|
||||
@@ -168,14 +168,16 @@ size_t iterate_folioq(struct iov_iter *iter, size_t len, void *priv, void *priv2
|
||||
break;
|
||||
|
||||
fsize = folioq_folio_size(folioq, slot);
|
||||
base = kmap_local_folio(folio, skip);
|
||||
part = umin(len, PAGE_SIZE - skip % PAGE_SIZE);
|
||||
remain = step(base, progress, part, priv, priv2);
|
||||
kunmap_local(base);
|
||||
consumed = part - remain;
|
||||
len -= consumed;
|
||||
progress += consumed;
|
||||
skip += consumed;
|
||||
if (skip < fsize) {
|
||||
base = kmap_local_folio(folio, skip);
|
||||
part = umin(len, PAGE_SIZE - skip % PAGE_SIZE);
|
||||
remain = step(base, progress, part, priv, priv2);
|
||||
kunmap_local(base);
|
||||
consumed = part - remain;
|
||||
len -= consumed;
|
||||
progress += consumed;
|
||||
skip += consumed;
|
||||
}
|
||||
if (skip >= fsize) {
|
||||
skip = 0;
|
||||
slot++;
|
||||
|
||||
@@ -57,47 +57,21 @@ static inline void kcov_remote_start_usb(u64 id)
|
||||
|
||||
/*
|
||||
* The softirq flavor of kcov_remote_*() functions is introduced as a temporary
|
||||
* workaround for KCOV's lack of nested remote coverage sections support.
|
||||
*
|
||||
* Adding support is tracked in https://bugzilla.kernel.org/show_bug.cgi?id=210337.
|
||||
*
|
||||
* kcov_remote_start_usb_softirq():
|
||||
*
|
||||
* 1. Only collects coverage when called in the softirq context. This allows
|
||||
* avoiding nested remote coverage collection sections in the task context.
|
||||
* For example, USB/IP calls usb_hcd_giveback_urb() in the task context
|
||||
* within an existing remote coverage collection section. Thus, KCOV should
|
||||
* not attempt to start collecting coverage within the coverage collection
|
||||
* section in __usb_hcd_giveback_urb() in this case.
|
||||
*
|
||||
* 2. Disables interrupts for the duration of the coverage collection section.
|
||||
* This allows avoiding nested remote coverage collection sections in the
|
||||
* softirq context (a softirq might occur during the execution of a work in
|
||||
* the BH workqueue, which runs with in_serving_softirq() > 0).
|
||||
* For example, usb_giveback_urb_bh() runs in the BH workqueue with
|
||||
* interrupts enabled, so __usb_hcd_giveback_urb() might be interrupted in
|
||||
* the middle of its remote coverage collection section, and the interrupt
|
||||
* handler might invoke __usb_hcd_giveback_urb() again.
|
||||
* work around for kcov's lack of nested remote coverage sections support in
|
||||
* task context. Adding support for nested sections is tracked in:
|
||||
* https://bugzilla.kernel.org/show_bug.cgi?id=210337
|
||||
*/
|
||||
|
||||
static inline unsigned long kcov_remote_start_usb_softirq(u64 id)
|
||||
static inline void kcov_remote_start_usb_softirq(u64 id)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
if (in_serving_softirq()) {
|
||||
local_irq_save(flags);
|
||||
if (in_serving_softirq() && !in_hardirq())
|
||||
kcov_remote_start_usb(id);
|
||||
}
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
static inline void kcov_remote_stop_softirq(unsigned long flags)
|
||||
static inline void kcov_remote_stop_softirq(void)
|
||||
{
|
||||
if (in_serving_softirq()) {
|
||||
if (in_serving_softirq() && !in_hardirq())
|
||||
kcov_remote_stop();
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
@@ -131,11 +105,8 @@ static inline u64 kcov_common_handle(void)
|
||||
}
|
||||
static inline void kcov_remote_start_common(u64 id) {}
|
||||
static inline void kcov_remote_start_usb(u64 id) {}
|
||||
static inline unsigned long kcov_remote_start_usb_softirq(u64 id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void kcov_remote_stop_softirq(unsigned long flags) {}
|
||||
static inline void kcov_remote_start_usb_softirq(u64 id) {}
|
||||
static inline void kcov_remote_stop_softirq(void) {}
|
||||
|
||||
#endif /* CONFIG_KCOV */
|
||||
#endif /* _LINUX_KCOV_H */
|
||||
|
||||
@@ -40,8 +40,9 @@ extern unsigned long long max_possible_pfn;
|
||||
* via a driver, and never indicated in the firmware-provided memory map as
|
||||
* system RAM. This corresponds to IORESOURCE_SYSRAM_DRIVER_MANAGED in the
|
||||
* kernel resource tree.
|
||||
* @MEMBLOCK_RSRV_NOINIT: memory region for which struct pages are
|
||||
* not initialized (only for reserved regions).
|
||||
* @MEMBLOCK_RSRV_NOINIT: reserved memory region for which struct pages are not
|
||||
* fully initialized. Users of this flag are responsible to properly initialize
|
||||
* struct pages of this region
|
||||
* @MEMBLOCK_RSRV_KERN: memory region that is reserved for kernel use,
|
||||
* either explictitly with memblock_reserve_kern() or via memblock
|
||||
* allocation APIs. All memblock allocations set this flag.
|
||||
|
||||
@@ -79,6 +79,7 @@ void migration_entry_wait_on_locked(swp_entry_t entry, spinlock_t *ptl)
|
||||
void folio_migrate_flags(struct folio *newfolio, struct folio *folio);
|
||||
int folio_migrate_mapping(struct address_space *mapping,
|
||||
struct folio *newfolio, struct folio *folio, int extra_count);
|
||||
int set_movable_ops(const struct movable_operations *ops, enum pagetype type);
|
||||
|
||||
#else
|
||||
|
||||
@@ -100,6 +101,10 @@ static inline int migrate_huge_page_move_mapping(struct address_space *mapping,
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
static inline int set_movable_ops(const struct movable_operations *ops, enum pagetype type)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MIGRATION */
|
||||
|
||||
|
||||
@@ -160,6 +160,7 @@ extern void nfs_join_page_group(struct nfs_page *head,
|
||||
extern int nfs_page_group_lock(struct nfs_page *);
|
||||
extern void nfs_page_group_unlock(struct nfs_page *);
|
||||
extern bool nfs_page_group_sync_on_bit(struct nfs_page *, unsigned int);
|
||||
extern bool nfs_page_group_sync_on_bit_locked(struct nfs_page *, unsigned int);
|
||||
extern int nfs_page_set_headlock(struct nfs_page *req);
|
||||
extern void nfs_page_clear_headlock(struct nfs_page *req);
|
||||
extern bool nfs_async_iocounter_wait(struct rpc_task *, struct nfs_lock_context *);
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#define INT3472_GPIO_TYPE_CLK_ENABLE 0x0c
|
||||
#define INT3472_GPIO_TYPE_PRIVACY_LED 0x0d
|
||||
#define INT3472_GPIO_TYPE_HANDSHAKE 0x12
|
||||
#define INT3472_GPIO_TYPE_HOTPLUG_DETECT 0x13
|
||||
|
||||
#define INT3472_PDEV_MAX_NAME_LEN 23
|
||||
#define INT3472_MAX_SENSOR_GPIOS 3
|
||||
|
||||
@@ -4213,6 +4213,8 @@ int skb_copy_and_crc32c_datagram_iter(const struct sk_buff *skb, int offset,
|
||||
struct iov_iter *to, int len, u32 *crcp);
|
||||
int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset,
|
||||
struct iov_iter *from, int len);
|
||||
int skb_copy_datagram_from_iter_full(struct sk_buff *skb, int offset,
|
||||
struct iov_iter *from, int len);
|
||||
int zerocopy_sg_from_iter(struct sk_buff *skb, struct iov_iter *frm);
|
||||
void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
|
||||
int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags);
|
||||
|
||||
@@ -328,8 +328,6 @@ static inline
|
||||
bool virtio_get_shm_region(struct virtio_device *vdev,
|
||||
struct virtio_shm_region *region, u8 id)
|
||||
{
|
||||
if (!region->len)
|
||||
return false;
|
||||
if (!vdev->config->get_shm_region)
|
||||
return false;
|
||||
return vdev->config->get_shm_region(vdev, region, id);
|
||||
|
||||
Reference in New Issue
Block a user