This series makes room in the driver for differentiation between the controllers which currently operate in TCFQ mode. Most of these are actually capable of a lot more in terms of throughput. This is in preparation of a second series which will convert the remaining users of TCFQ mode altogether to XSPI mode with command cycling. Vladimir Oltean (6): doc: spi-fsl-dspi: Add specific compatibles for all Layerscape SoCs spi: spi-fsl-dspi: Use specific compatible strings for all SoC instantiations spi: spi-fsl-dspi: Parameterize the FIFO size and DMA buffer size spi: spi-fsl-dspi: LS2080A and LX2160A support XSPI mode spi: spi-fsl-dspi: Support SPI software timestamping in all non-DMA modes spi: spi-fsl-dspi: Convert the instantiations that support it to DMA .../devicetree/bindings/spi/spi-fsl-dspi.txt | 17 +- drivers/spi/spi-fsl-dspi.c | 162 +++++++++++++----- 2 files changed, 128 insertions(+), 51 deletions(-) -- 2.17.1
Showing the changes to include/linux (28 of 979 files). Show all
Unified · Split
| @@ -524,7 +524,7 @@ struct request_queue { · 523 unmodified lines | ||
| 524 | 524 | unsigned int sg_reserved_size; |
| 525 | 525 | int node; |
| 526 | 526 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
| 527 | − struct blk_trace *blk_trace; | |
| 527 | + struct blk_trace __rcu *blk_trace; | |
| 528 | 528 | struct mutex blk_trace_mutex; |
| 529 | 529 | #endif |
| 530 | 530 | /* |
| @@ -51,9 +51,13 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 50 unmodified lines | ||
| 51 | 51 | **/ |
| 52 | 52 | #define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ |
| 53 | 53 | do { \ |
| 54 | − struct blk_trace *bt = (q)->blk_trace; \ | |
| 54 | + struct blk_trace *bt; \ | |
| 55 | + \ | |
| 56 | + rcu_read_lock(); \ | |
| 57 | + bt = rcu_dereference((q)->blk_trace); \ | |
| 55 | 58 | if (unlikely(bt)) \ |
| 56 | 59 | __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ |
| 60 | + rcu_read_unlock(); \ | |
| 57 | 61 | } while (0) |
| 58 | 62 | #define blk_add_trace_msg(q, fmt, ...) \ |
| 59 | 63 | blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__) |
| @@ -61,10 +65,14 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 1 unmodified line | ||
| 61 | 65 | |
| 62 | 66 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) |
| 63 | 67 | { |
| 64 | − struct blk_trace *bt = q->blk_trace; | |
| 65 | − if (likely(!bt)) | |
| 66 | − return false; | |
| 67 | − return bt->act_mask & BLK_TC_NOTIFY; | |
| 68 | + struct blk_trace *bt; | |
| 69 | + bool ret; | |
| 70 | + | |
| 71 | + rcu_read_lock(); | |
| 72 | + bt = rcu_dereference(q->blk_trace); | |
| 73 | + ret = bt && (bt->act_mask & BLK_TC_NOTIFY); | |
| 74 | + rcu_read_unlock(); | |
| 75 | + return ret; | |
| 68 | 76 | } |
| 69 | 77 | |
| 70 | 78 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, |
| @@ -10,6 +10,9 @@ · 9 unmodified lines | ||
| 10 | 10 | #include <linux/kernel.h> |
| 11 | 11 | #include <linux/types.h> |
| 12 | 12 | |
| 13 | +#define BOOTCONFIG_MAGIC "#BOOTCONFIG\n" | |
| 14 | +#define BOOTCONFIG_MAGIC_LEN 12 | |
| 15 | + | |
| 13 | 16 | /* XBC tree node */ |
| 14 | 17 | struct xbc_node { |
| 15 | 18 | u16 next; |
| @@ -248,15 +248,6 @@ typedef struct compat_siginfo { · 247 unmodified lines | ||
| 248 | 248 | } _sifields; |
| 249 | 249 | } compat_siginfo_t; |
| 250 | 250 | |
| 251 | −/* | |
| 252 | − * These functions operate on 32- or 64-bit specs depending on | |
| 253 | − * COMPAT_USE_64BIT_TIME, hence the void user pointer arguments. | |
| 254 | − */ | |
| 255 | −extern int compat_get_timespec(struct timespec *, const void __user *); | |
| 256 | −extern int compat_put_timespec(const struct timespec *, void __user *); | |
| 257 | −extern int compat_get_timeval(struct timeval *, const void __user *); | |
| 258 | −extern int compat_put_timeval(const struct timeval *, void __user *); | |
| 259 | − | |
| 260 | 251 | struct compat_iovec { |
| 261 | 252 | compat_uptr_t iov_base; |
| 262 | 253 | compat_size_t iov_len; |
| @@ -416,26 +407,6 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *to, const kernel_siginf · 153 unmodified lines | ||
| 416 | 407 | int get_compat_sigevent(struct sigevent *event, |
| 417 | 408 | const struct compat_sigevent __user *u_event); |
| 418 | 409 | |
| 419 | −static inline int old_timeval32_compare(struct old_timeval32 *lhs, | |
| 420 | − struct old_timeval32 *rhs) | |
| 421 | −{ | |
| 422 | − if (lhs->tv_sec < rhs->tv_sec) | |
| 423 | − return -1; | |
| 424 | − if (lhs->tv_sec > rhs->tv_sec) | |
| 425 | − return 1; | |
| 426 | − return lhs->tv_usec - rhs->tv_usec; | |
| 427 | −} | |
| 428 | − | |
| 429 | −static inline int old_timespec32_compare(struct old_timespec32 *lhs, | |
| 430 | − struct old_timespec32 *rhs) | |
| 431 | −{ | |
| 432 | − if (lhs->tv_sec < rhs->tv_sec) | |
| 433 | − return -1; | |
| 434 | − if (lhs->tv_sec > rhs->tv_sec) | |
| 435 | − return 1; | |
| 436 | − return lhs->tv_nsec - rhs->tv_nsec; | |
| 437 | −} | |
| 438 | − | |
| 439 | 410 | extern int get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat); |
| 440 | 411 | |
| 441 | 412 | /* |
| @@ -201,9 +201,6 @@ static inline bool policy_is_shared(struct cpufreq_policy *policy) · 200 unmodified lines | ||
| 201 | 201 | return cpumask_weight(policy->cpus) > 1; |
| 202 | 202 | } |
| 203 | 203 | |
| 204 | −/* /sys/devices/system/cpu/cpufreq: entry point for global variables */ | |
| 205 | −extern struct kobject *cpufreq_global_kobject; | |
| 206 | − | |
| 207 | 204 | #ifdef CONFIG_CPU_FREQ |
| 208 | 205 | unsigned int cpufreq_get(unsigned int cpu); |
| 209 | 206 | unsigned int cpufreq_quick_get(unsigned int cpu); |
| @@ -129,11 +129,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev, · 128 unmodified lines | ||
| 129 | 129 | sectors); |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | −static inline struct dax_device *fs_dax_get_by_host(const char *host) | |
| 133 | −{ | |
| 134 | − return dax_get_by_host(host); | |
| 135 | −} | |
| 136 | − | |
| 137 | 132 | static inline void fs_put_dax(struct dax_device *dax_dev) |
| 138 | 133 | { |
| 139 | 134 | put_dax(dax_dev); |
| @@ -141,7 +136,7 @@ static inline void fs_put_dax(struct dax_device *dax_dev) · 1 unmodified line | ||
| 141 | 136 | |
| 142 | 137 | struct dax_device *fs_dax_get_by_bdev(struct block_device *bdev); |
| 143 | 138 | int dax_writeback_mapping_range(struct address_space *mapping, |
| 144 | − struct block_device *bdev, struct writeback_control *wbc); | |
| 139 | + struct dax_device *dax_dev, struct writeback_control *wbc); | |
| 145 | 140 | |
| 146 | 141 | struct page *dax_layout_busy_page(struct address_space *mapping); |
| 147 | 142 | dax_entry_t dax_lock_page(struct page *page); |
| @@ -160,11 +155,6 @@ static inline bool generic_fsdax_supported(struct dax_device *dax_dev, · 12 unmodified lines | ||
| 160 | 155 | return false; |
| 161 | 156 | } |
| 162 | 157 | |
| 163 | −static inline struct dax_device *fs_dax_get_by_host(const char *host) | |
| 164 | −{ | |
| 165 | − return NULL; | |
| 166 | −} | |
| 167 | − | |
| 168 | 158 | static inline void fs_put_dax(struct dax_device *dax_dev) |
| 169 | 159 | { |
| 170 | 160 | } |
| @@ -180,7 +170,7 @@ static inline struct page *dax_layout_busy_page(struct address_space *mapping) · 9 unmodified lines | ||
| 180 | 170 | } |
| 181 | 171 | |
| 182 | 172 | static inline int dax_writeback_mapping_range(struct address_space *mapping, |
| 183 | − struct block_device *bdev, struct writeback_control *wbc) | |
| 173 | + struct dax_device *dax_dev, struct writeback_control *wbc) | |
| 184 | 174 | { |
| 185 | 175 | return -EOPNOTSUPP; |
| 186 | 176 | } |
| @@ -492,7 +492,7 @@ struct hid_report_enum { · 491 unmodified lines | ||
| 492 | 492 | }; |
| 493 | 493 | |
| 494 | 494 | #define HID_MIN_BUFFER_SIZE 64 /* make sure there is at least a packet size of space */ |
| 495 | −#define HID_MAX_BUFFER_SIZE 4096 /* 4kb */ | |
| 495 | +#define HID_MAX_BUFFER_SIZE 8192 /* 8kb */ | |
| 496 | 496 | #define HID_CONTROL_FIFO_SIZE 256 /* to init devices with >100 reports */ |
| 497 | 497 | #define HID_OUTPUT_FIFO_SIZE 64 |
| 498 | 498 | |
| @@ -22,12 +22,22 @@ extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); · 21 unmodified lines | ||
| 22 | 22 | int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, |
| 23 | 23 | unsigned int data_len); |
| 24 | 24 | |
| 25 | +#if IS_ENABLED(CONFIG_NF_NAT) | |
| 26 | +void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info); | |
| 27 | +#else | |
| 28 | +#define icmpv6_ndo_send icmpv6_send | |
| 29 | +#endif | |
| 30 | + | |
| 25 | 31 | #else |
| 26 | 32 | |
| 27 | 33 | static inline void icmpv6_send(struct sk_buff *skb, |
| 28 | 34 | u8 type, u8 code, __u32 info) |
| 29 | 35 | { |
| 36 | +} | |
| 30 | 37 | |
| 38 | +static inline void icmpv6_ndo_send(struct sk_buff *skb, | |
| 39 | + u8 type, u8 code, __u32 info) | |
| 40 | +{ | |
| 31 | 41 | } |
| 32 | 42 | #endif |
| 33 | 43 | |
| @@ -122,7 +122,7 @@ static inline int intel_svm_unbind_mm(struct device *dev, int pasid) · 121 unmodified lines | ||
| 122 | 122 | BUG(); |
| 123 | 123 | } |
| 124 | 124 | |
| 125 | −static int intel_svm_is_pasid_valid(struct device *dev, int pasid) | |
| 125 | +static inline int intel_svm_is_pasid_valid(struct device *dev, int pasid) | |
| 126 | 126 | { |
| 127 | 127 | return -EINVAL; |
| 128 | 128 | } |
| @@ -192,7 +192,7 @@ enum { · 191 unmodified lines | ||
| 192 | 192 | IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0), |
| 193 | 193 | |
| 194 | 194 | /* Irq domain name was allocated in __irq_domain_add() */ |
| 195 | − IRQ_DOMAIN_NAME_ALLOCATED = (1 << 6), | |
| 195 | + IRQ_DOMAIN_NAME_ALLOCATED = (1 << 1), | |
| 196 | 196 | |
| 197 | 197 | /* Irq domain is an IPI domain with virq per cpu */ |
| 198 | 198 | IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2), |
| @@ -66,33 +66,15 @@ static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs) · 65 unmodified lines | ||
| 66 | 66 | */ |
| 67 | 67 | #define ktime_sub_ns(kt, nsval) ((kt) - (nsval)) |
| 68 | 68 | |
| 69 | −/* convert a timespec to ktime_t format: */ | |
| 70 | −static inline ktime_t timespec_to_ktime(struct timespec ts) | |
| 71 | −{ | |
| 72 | − return ktime_set(ts.tv_sec, ts.tv_nsec); | |
| 73 | −} | |
| 74 | − | |
| 75 | 69 | /* convert a timespec64 to ktime_t format: */ |
| 76 | 70 | static inline ktime_t timespec64_to_ktime(struct timespec64 ts) |
| 77 | 71 | { |
| 78 | 72 | return ktime_set(ts.tv_sec, ts.tv_nsec); |
| 79 | 73 | } |
| 80 | 74 | |
| 81 | −/* convert a timeval to ktime_t format: */ | |
| 82 | −static inline ktime_t timeval_to_ktime(struct timeval tv) | |
| 83 | −{ | |
| 84 | − return ktime_set(tv.tv_sec, tv.tv_usec * NSEC_PER_USEC); | |
| 85 | −} | |
| 86 | − | |
| 87 | −/* Map the ktime_t to timespec conversion to ns_to_timespec function */ | |
| 88 | −#define ktime_to_timespec(kt) ns_to_timespec((kt)) | |
| 89 | − | |
| 90 | 75 | /* Map the ktime_t to timespec conversion to ns_to_timespec function */ |
| 91 | 76 | #define ktime_to_timespec64(kt) ns_to_timespec64((kt)) |
| 92 | 77 | |
| 93 | −/* Map the ktime_t to timeval conversion to ns_to_timeval function */ | |
| 94 | −#define ktime_to_timeval(kt) ns_to_timeval((kt)) | |
| 95 | − | |
| 96 | 78 | /* Convert ktime_t to nanoseconds */ |
| 97 | 79 | static inline s64 ktime_to_ns(const ktime_t kt) |
| 98 | 80 | { |
| @@ -215,25 +197,6 @@ static inline ktime_t ktime_sub_ms(const ktime_t kt, const u64 msec) · 116 unmodified lines | ||
| 215 | 197 | |
| 216 | 198 | extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); |
| 217 | 199 | |
| 218 | −/** | |
| 219 | − * ktime_to_timespec_cond - convert a ktime_t variable to timespec | |
| 220 | − * format only if the variable contains data | |
| 221 | − * @kt: the ktime_t variable to convert | |
| 222 | − * @ts: the timespec variable to store the result in | |
| 223 | − * | |
| 224 | − * Return: %true if there was a successful conversion, %false if kt was 0. | |
| 225 | − */ | |
| 226 | −static inline __must_check bool ktime_to_timespec_cond(const ktime_t kt, | |
| 227 | − struct timespec *ts) | |
| 228 | −{ | |
| 229 | − if (kt) { | |
| 230 | − *ts = ktime_to_timespec(kt); | |
| 231 | − return true; | |
| 232 | − } else { | |
| 233 | − return false; | |
| 234 | − } | |
| 235 | −} | |
| 236 | − | |
| 237 | 200 | /** |
| 238 | 201 | * ktime_to_timespec64_cond - convert a ktime_t variable to timespec64 |
| 239 | 202 | * format only if the variable contains data |
| @@ -889,6 +889,8 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); · 888 unmodified lines | ||
| 889 | 889 | bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu); |
| 890 | 890 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); |
| 891 | 891 | bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu); |
| 892 | +int kvm_arch_post_init_vm(struct kvm *kvm); | |
| 893 | +void kvm_arch_pre_destroy_vm(struct kvm *kvm); | |
| 892 | 894 | |
| 893 | 895 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC |
| 894 | 896 | /* |
| @@ -1342,7 +1344,7 @@ static inline void kvm_vcpu_set_dy_eligible(struct kvm_vcpu *vcpu, bool val) · 447 unmodified lines | ||
| 1342 | 1344 | #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */ |
| 1343 | 1345 | |
| 1344 | 1346 | struct kvm_vcpu *kvm_get_running_vcpu(void); |
| 1345 | −struct kvm_vcpu __percpu **kvm_get_running_vcpus(void); | |
| 1347 | +struct kvm_vcpu * __percpu *kvm_get_running_vcpus(void); | |
| 1346 | 1348 | |
| 1347 | 1349 | #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS |
| 1348 | 1350 | bool kvm_arch_has_irq_bypass(void); |
| @@ -688,7 +688,10 @@ struct mlx5_ifc_flow_table_nic_cap_bits { · 687 unmodified lines | ||
| 688 | 688 | u8 nic_rx_multi_path_tirs[0x1]; |
| 689 | 689 | u8 nic_rx_multi_path_tirs_fts[0x1]; |
| 690 | 690 | u8 allow_sniffer_and_nic_rx_shared_tir[0x1]; |
| 691 | − u8 reserved_at_3[0x1d]; | |
| 691 | + u8 reserved_at_3[0x4]; | |
| 692 | + u8 sw_owner_reformat_supported[0x1]; | |
| 693 | + u8 reserved_at_8[0x18]; | |
| 694 | + | |
| 692 | 695 | u8 encap_general_header[0x1]; |
| 693 | 696 | u8 reserved_at_21[0xa]; |
| 694 | 697 | u8 log_max_packet_reformat_context[0x5]; |
| @@ -72,6 +72,8 @@ void netdev_set_default_ethtool_ops(struct net_device *dev, · 71 unmodified lines | ||
| 72 | 72 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ |
| 73 | 73 | #define NET_RX_DROP 1 /* packet dropped */ |
| 74 | 74 | |
| 75 | +#define MAX_NEST_DEV 8 | |
| 76 | + | |
| 75 | 77 | /* |
| 76 | 78 | * Transmit return codes: transmit return codes originate from three different |
| 77 | 79 | * namespaces: |
| @@ -1616,6 +1618,7 @@ enum netdev_priv_flags { · 1538 unmodified lines | ||
| 1616 | 1618 | * and drivers will need to set them appropriately. |
| 1617 | 1619 | * |
| 1618 | 1620 | * @mpls_features: Mask of features inheritable by MPLS |
| 1621 | + * @gso_partial_features: value(s) from NETIF_F_GSO\* | |
| 1619 | 1622 | * |
| 1620 | 1623 | * @ifindex: interface index |
| 1621 | 1624 | * @group: The group the device belongs to |
| @@ -1640,8 +1643,11 @@ enum netdev_priv_flags { · 18 unmodified lines | ||
| 1640 | 1643 | * @netdev_ops: Includes several pointers to callbacks, |
| 1641 | 1644 | * if one wants to override the ndo_*() functions |
| 1642 | 1645 | * @ethtool_ops: Management operations |
| 1646 | + * @l3mdev_ops: Layer 3 master device operations | |
| 1643 | 1647 | * @ndisc_ops: Includes callbacks for different IPv6 neighbour |
| 1644 | 1648 | * discovery handling. Necessary for e.g. 6LoWPAN. |
| 1649 | + * @xfrmdev_ops: Transformation offload operations | |
| 1650 | + * @tlsdev_ops: Transport Layer Security offload operations | |
| 1645 | 1651 | * @header_ops: Includes callbacks for creating,parsing,caching,etc |
| 1646 | 1652 | * of Layer 2 headers. |
| 1647 | 1653 | * |
| @@ -1680,6 +1686,7 @@ enum netdev_priv_flags { · 32 unmodified lines | ||
| 1680 | 1686 | * @dev_port: Used to differentiate devices that share |
| 1681 | 1687 | * the same function |
| 1682 | 1688 | * @addr_list_lock: XXX: need comments on this one |
| 1689 | + * @name_assign_type: network interface name assignment type | |
| 1683 | 1690 | * @uc_promisc: Counter that indicates promiscuous mode |
| 1684 | 1691 | * has been enabled due to the need to listen to |
| 1685 | 1692 | * additional unicast addresses in a device that |
| @@ -1702,6 +1709,9 @@ enum netdev_priv_flags { · 16 unmodified lines | ||
| 1702 | 1709 | * @ip6_ptr: IPv6 specific data |
| 1703 | 1710 | * @ax25_ptr: AX.25 specific data |
| 1704 | 1711 | * @ieee80211_ptr: IEEE 802.11 specific data, assign before registering |
| 1712 | + * @ieee802154_ptr: IEEE 802.15.4 low-rate Wireless Personal Area Network | |
| 1713 | + * device struct | |
| 1714 | + * @mpls_ptr: mpls_dev struct pointer | |
| 1705 | 1715 | * |
| 1706 | 1716 | * @dev_addr: Hw address (before bcast, |
| 1707 | 1717 | * because most packets are unicast) |
| @@ -1710,6 +1720,8 @@ enum netdev_priv_flags { · 2 unmodified lines | ||
| 1710 | 1720 | * @num_rx_queues: Number of RX queues |
| 1711 | 1721 | * allocated at register_netdev() time |
| 1712 | 1722 | * @real_num_rx_queues: Number of RX queues currently active in device |
| 1723 | + * @xdp_prog: XDP sockets filter program pointer | |
| 1724 | + * @gro_flush_timeout: timeout for GRO layer in NAPI | |
| 1713 | 1725 | * |
| 1714 | 1726 | * @rx_handler: handler for received packets |
| 1715 | 1727 | * @rx_handler_data: XXX: need comments on this one |
| @@ -1731,10 +1743,14 @@ enum netdev_priv_flags { · 15 unmodified lines | ||
| 1731 | 1743 | * @qdisc: Root qdisc from userspace point of view |
| 1732 | 1744 | * @tx_queue_len: Max frames per queue allowed |
| 1733 | 1745 | * @tx_global_lock: XXX: need comments on this one |
| 1746 | + * @xdp_bulkq: XDP device bulk queue | |
| 1747 | + * @xps_cpus_map: all CPUs map for XPS device | |
| 1748 | + * @xps_rxqs_map: all RXQs map for XPS device | |
| 1734 | 1749 | * |
| 1735 | 1750 | * @xps_maps: XXX: need comments on this one |
| 1736 | 1751 | * @miniq_egress: clsact qdisc specific data for |
| 1737 | 1752 | * egress processing |
| 1753 | + * @qdisc_hash: qdisc hash table | |
| 1738 | 1754 | * @watchdog_timeo: Represents the timeout that is used by |
| 1739 | 1755 | * the watchdog (see dev_watchdog()) |
| 1740 | 1756 | * @watchdog_timer: List of timers |
| @@ -3548,7 +3564,7 @@ static inline unsigned int netif_attrmask_next(int n, const unsigned long *srcp, · 1807 unmodified lines | ||
| 3548 | 3564 | } |
| 3549 | 3565 | |
| 3550 | 3566 | /** |
| 3551 | − * netif_attrmask_next_and - get the next CPU/Rx queue in *src1p & *src2p | |
| 3567 | + * netif_attrmask_next_and - get the next CPU/Rx queue in \*src1p & \*src2p | |
| 3552 | 3568 | * @n: CPU/Rx queue index |
| 3553 | 3569 | * @src1p: the first CPUs/Rx queues mask pointer |
| 3554 | 3570 | * @src2p: the second CPUs/Rx queues mask pointer |
| @@ -4375,11 +4391,8 @@ void *netdev_lower_get_next(struct net_device *dev, · 820 unmodified lines | ||
| 4375 | 4391 | ldev; \ |
| 4376 | 4392 | ldev = netdev_lower_get_next(dev, &(iter))) |
| 4377 | 4393 | |
| 4378 | −struct net_device *netdev_all_lower_get_next(struct net_device *dev, | |
| 4394 | +struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev, | |
| 4379 | 4395 | struct list_head **iter); |
| 4380 | −struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev, | |
| 4381 | − struct list_head **iter); | |
| 4382 | − | |
| 4383 | 4396 | int netdev_walk_all_lower_dev(struct net_device *dev, |
| 4384 | 4397 | int (*fn)(struct net_device *lower_dev, |
| 4385 | 4398 | void *data), |
| @@ -121,6 +121,7 @@ struct ip_set_ext { · 120 unmodified lines | ||
| 121 | 121 | u32 timeout; |
| 122 | 122 | u8 packets_op; |
| 123 | 123 | u8 bytes_op; |
| 124 | + bool target; | |
| 124 | 125 | }; |
| 125 | 126 | |
| 126 | 127 | struct ip_set; |
| @@ -187,6 +188,14 @@ struct ip_set_type_variant { · 60 unmodified lines | ||
| 187 | 188 | /* Return true if "b" set is the same as "a" |
| 188 | 189 | * according to the create set parameters */ |
| 189 | 190 | bool (*same_set)(const struct ip_set *a, const struct ip_set *b); |
| 191 | + /* Region-locking is used */ | |
| 192 | + bool region_lock; | |
| 193 | +}; | |
| 194 | + | |
| 195 | +struct ip_set_region { | |
| 196 | + spinlock_t lock; /* Region lock */ | |
| 197 | + size_t ext_size; /* Size of the dynamic extensions */ | |
| 198 | + u32 elements; /* Number of elements vs timeout */ | |
| 190 | 199 | }; |
| 191 | 200 | |
| 192 | 201 | /* The core set type structure */ |
| @@ -501,7 +510,7 @@ ip_set_init_skbinfo(struct ip_set_skbinfo *skbinfo, · 308 unmodified lines | ||
| 501 | 510 | } |
| 502 | 511 | |
| 503 | 512 | #define IP_SET_INIT_KEXT(skb, opt, set) \ |
| 504 | − { .bytes = (skb)->len, .packets = 1, \ | |
| 513 | + { .bytes = (skb)->len, .packets = 1, .target = true,\ | |
| 505 | 514 | .timeout = ip_set_adt_opt_timeout(opt, set) } |
| 506 | 515 | |
| 507 | 516 | #define IP_SET_INIT_UEXT(set) \ |
| @@ -337,35 +337,17 @@ static inline int nfs_server_capable(struct inode *inode, int cap) · 336 unmodified lines | ||
| 337 | 337 | return NFS_SERVER(inode)->caps & cap; |
| 338 | 338 | } |
| 339 | 339 | |
| 340 | −static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf) | |
| 341 | −{ | |
| 342 | − dentry->d_time = verf; | |
| 343 | −} | |
| 344 | − | |
| 345 | 340 | /** |
| 346 | 341 | * nfs_save_change_attribute - Returns the inode attribute change cookie |
| 347 | 342 | * @dir - pointer to parent directory inode |
| 348 | − * The "change attribute" is updated every time we finish an operation | |
| 349 | − * that will result in a metadata change on the server. | |
| 343 | + * The "cache change attribute" is updated when we need to revalidate | |
| 344 | + * our dentry cache after a directory was seen to change on the server. | |
| 350 | 345 | */ |
| 351 | 346 | static inline unsigned long nfs_save_change_attribute(struct inode *dir) |
| 352 | 347 | { |
| 353 | 348 | return NFS_I(dir)->cache_change_attribute; |
| 354 | 349 | } |
| 355 | 350 | |
| 356 | −/** | |
| 357 | − * nfs_verify_change_attribute - Detects NFS remote directory changes | |
| 358 | − * @dir - pointer to parent directory inode | |
| 359 | − * @chattr - previously saved change attribute | |
| 360 | − * Return "false" if the verifiers doesn't match the change attribute. | |
| 361 | − * This would usually indicate that the directory contents have changed on | |
| 362 | − * the server, and that any dentries need revalidating. | |
| 363 | − */ | |
| 364 | −static inline int nfs_verify_change_attribute(struct inode *dir, unsigned long chattr) | |
| 365 | −{ | |
| 366 | − return chattr == NFS_I(dir)->cache_change_attribute; | |
| 367 | −} | |
| 368 | − | |
| 369 | 351 | /* |
| 370 | 352 | * linux/fs/nfs/inode.c |
| 371 | 353 | */ |
| @@ -495,6 +477,10 @@ extern const struct file_operations nfs_dir_operations; · 123 unmodified lines | ||
| 495 | 477 | extern const struct dentry_operations nfs_dentry_operations; |
| 496 | 478 | |
| 497 | 479 | extern void nfs_force_lookup_revalidate(struct inode *dir); |
| 480 | +extern void nfs_set_verifier(struct dentry * dentry, unsigned long verf); | |
| 481 | +#if IS_ENABLED(CONFIG_NFS_V4) | |
| 482 | +extern void nfs_clear_verifier_delegated(struct inode *inode); | |
| 483 | +#endif /* IS_ENABLED(CONFIG_NFS_V4) */ | |
| 498 | 484 | extern struct dentry *nfs_add_or_obtain(struct dentry *dentry, |
| 499 | 485 | struct nfs_fh *fh, struct nfs_fattr *fattr, |
| 500 | 486 | struct nfs4_label *label); |
| @@ -29,7 +29,8 @@ struct pipe_buffer { · 28 unmodified lines | ||
| 29 | 29 | /** |
| 30 | 30 | * struct pipe_inode_info - a linux kernel pipe |
| 31 | 31 | * @mutex: mutex protecting the whole thing |
| 32 | − * @wait: reader/writer wait point in case of empty/full pipe | |
| 32 | + * @rd_wait: reader wait point in case of empty pipe | |
| 33 | + * @wr_wait: writer wait point in case of full pipe | |
| 33 | 34 | * @head: The point of buffer production |
| 34 | 35 | * @tail: The point of buffer consumption |
| 35 | 36 | * @max_usage: The maximum number of slots that may be used in the ring |
| @@ -145,6 +145,13 @@ static inline void hlist_nulls_add_tail_rcu(struct hlist_nulls_node *n, · 144 unmodified lines | ||
| 145 | 145 | } |
| 146 | 146 | } |
| 147 | 147 | |
| 148 | +/* after that hlist_nulls_del will work */ | |
| 149 | +static inline void hlist_nulls_add_fake(struct hlist_nulls_node *n) | |
| 150 | +{ | |
| 151 | + n->pprev = &n->next; | |
| 152 | + n->next = (struct hlist_nulls_node *)NULLS_MARKER(NULL); | |
| 153 | +} | |
| 154 | + | |
| 148 | 155 | /** |
| 149 | 156 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type |
| 150 | 157 | * @tpos: the type * to use as a loop cursor. |
| @@ -15,9 +15,11 @@ static inline void nohz_balance_enter_idle(int cpu) { } · 14 unmodified lines | ||
| 15 | 15 | |
| 16 | 16 | #ifdef CONFIG_NO_HZ_COMMON |
| 17 | 17 | void calc_load_nohz_start(void); |
| 18 | +void calc_load_nohz_remote(struct rq *rq); | |
| 18 | 19 | void calc_load_nohz_stop(void); |
| 19 | 20 | #else |
| 20 | 21 | static inline void calc_load_nohz_start(void) { } |
| 22 | +static inline void calc_load_nohz_remote(struct rq *rq) { } | |
| 21 | 23 | static inline void calc_load_nohz_stop(void) { } |
| 22 | 24 | #endif /* CONFIG_NO_HZ_COMMON */ |
| 23 | 25 | |
| @@ -611,9 +611,15 @@ typedef unsigned char *sk_buff_data_t; · 610 unmodified lines | ||
| 611 | 611 | * @next: Next buffer in list |
| 612 | 612 | * @prev: Previous buffer in list |
| 613 | 613 | * @tstamp: Time we arrived/left |
| 614 | + * @skb_mstamp_ns: (aka @tstamp) earliest departure time; start point | |
| 615 | + * for retransmit timer | |
| 614 | 616 | * @rbnode: RB tree node, alternative to next/prev for netem/tcp |
| 617 | + * @list: queue head | |
| 615 | 618 | * @sk: Socket we are owned by |
| 619 | + * @ip_defrag_offset: (aka @sk) alternate use of @sk, used in | |
| 620 | + * fragmentation management | |
| 616 | 621 | * @dev: Device we arrived on/are leaving by |
| 622 | + * @dev_scratch: (aka @dev) alternate use of @dev when @dev would be %NULL | |
| 617 | 623 | * @cb: Control buffer. Free for use by every layer. Put private vars here |
| 618 | 624 | * @_skb_refdst: destination entry (with norefcount bit) |
| 619 | 625 | * @sp: the security path, used for xfrm |
| @@ -632,6 +638,9 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines | ||
| 632 | 638 | * @pkt_type: Packet class |
| 633 | 639 | * @fclone: skbuff clone status |
| 634 | 640 | * @ipvs_property: skbuff is owned by ipvs |
| 641 | + * @inner_protocol_type: whether the inner protocol is | |
| 642 | + * ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO | |
| 643 | + * @remcsum_offload: remote checksum offload is enabled | |
| 635 | 644 | * @offload_fwd_mark: Packet was L2-forwarded in hardware |
| 636 | 645 | * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware |
| 637 | 646 | * @tc_skip_classify: do not classify packet. set by IFB device |
| @@ -650,6 +659,8 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines | ||
| 650 | 659 | * @tc_index: Traffic control index |
| 651 | 660 | * @hash: the packet hash |
| 652 | 661 | * @queue_mapping: Queue mapping for multiqueue devices |
| 662 | + * @head_frag: skb was allocated from page fragments, | |
| 663 | + * not allocated by kmalloc() or vmalloc(). | |
| 653 | 664 | * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves |
| 654 | 665 | * @active_extensions: active extensions (skb_ext_id types) |
| 655 | 666 | * @ndisc_nodetype: router type (from link layer) |
| @@ -660,15 +671,28 @@ typedef unsigned char *sk_buff_data_t; · 4 unmodified lines | ||
| 660 | 671 | * @wifi_acked_valid: wifi_acked was set |
| 661 | 672 | * @wifi_acked: whether frame was acked on wifi or not |
| 662 | 673 | * @no_fcs: Request NIC to treat last 4 bytes as Ethernet FCS |
| 674 | + * @encapsulation: indicates the inner headers in the skbuff are valid | |
| 675 | + * @encap_hdr_csum: software checksum is needed | |
| 676 | + * @csum_valid: checksum is already valid | |
| 663 | 677 | * @csum_not_inet: use CRC32c to resolve CHECKSUM_PARTIAL |
| 678 | + * @csum_complete_sw: checksum was completed by software | |
| 679 | + * @csum_level: indicates the number of consecutive checksums found in | |
| 680 | + * the packet minus one that have been verified as | |
| 681 | + * CHECKSUM_UNNECESSARY (max 3) | |
| 664 | 682 | * @dst_pending_confirm: need to confirm neighbour |
| 665 | 683 | * @decrypted: Decrypted SKB |
| 666 | 684 | * @napi_id: id of the NAPI struct this skb came from |
| 685 | + * @sender_cpu: (aka @napi_id) source CPU in XPS | |
| 667 | 686 | * @secmark: security marking |
| 668 | 687 | * @mark: Generic packet mark |
| 688 | + * @reserved_tailroom: (aka @mark) number of bytes of free space available | |
| 689 | + * at the tail of an sk_buff | |
| 690 | + * @vlan_present: VLAN tag is present | |
| 669 | 691 | * @vlan_proto: vlan encapsulation protocol |
| 670 | 692 | * @vlan_tci: vlan tag control information |
| 671 | 693 | * @inner_protocol: Protocol (encapsulation) |
| 694 | + * @inner_ipproto: (aka @inner_protocol) stores ipproto when | |
| 695 | + * skb->inner_protocol_type == ENCAP_TYPE_IPPROTO; | |
| 672 | 696 | * @inner_transport_header: Inner transport layer header (encapsulation) |
| 673 | 697 | * @inner_network_header: Network layer header (encapsulation) |
| 674 | 698 | * @inner_mac_header: Link layer header (encapsulation) |
| @@ -750,7 +774,9 @@ struct sk_buff { · 75 unmodified lines | ||
| 750 | 774 | #endif |
| 751 | 775 | #define CLONED_OFFSET() offsetof(struct sk_buff, __cloned_offset) |
| 752 | 776 | |
| 777 | + /* private: */ | |
| 753 | 778 | __u8 __cloned_offset[0]; |
| 779 | + /* public: */ | |
| 754 | 780 | __u8 cloned:1, |
| 755 | 781 | nohdr:1, |
| 756 | 782 | fclone:2, |
| @@ -775,7 +801,9 @@ struct sk_buff { · 18 unmodified lines | ||
| 775 | 801 | #endif |
| 776 | 802 | #define PKT_TYPE_OFFSET() offsetof(struct sk_buff, __pkt_type_offset) |
| 777 | 803 | |
| 804 | + /* private: */ | |
| 778 | 805 | __u8 __pkt_type_offset[0]; |
| 806 | + /* public: */ | |
| 779 | 807 | __u8 pkt_type:3; |
| 780 | 808 | __u8 ignore_df:1; |
| 781 | 809 | __u8 nf_trace:1; |
| @@ -798,7 +826,9 @@ struct sk_buff { · 16 unmodified lines | ||
| 798 | 826 | #define PKT_VLAN_PRESENT_BIT 0 |
| 799 | 827 | #endif |
| 800 | 828 | #define PKT_VLAN_PRESENT_OFFSET() offsetof(struct sk_buff, __pkt_vlan_present_offset) |
| 829 | + /* private: */ | |
| 801 | 830 | __u8 __pkt_vlan_present_offset[0]; |
| 831 | + /* public: */ | |
| 802 | 832 | __u8 vlan_present:1; |
| 803 | 833 | __u8 csum_complete_sw:1; |
| 804 | 834 | __u8 csum_level:2; |
| @@ -191,7 +191,7 @@ struct platform_s2idle_ops { · 190 unmodified lines | ||
| 191 | 191 | int (*begin)(void); |
| 192 | 192 | int (*prepare)(void); |
| 193 | 193 | int (*prepare_late)(void); |
| 194 | − void (*wake)(void); | |
| 194 | + bool (*wake)(void); | |
| 195 | 195 | void (*restore_early)(void); |
| 196 | 196 | void (*restore)(void); |
| 197 | 197 | void (*end)(void); |
| @@ -64,6 +64,9 @@ extern void swiotlb_tbl_sync_single(struct device *hwdev, · 63 unmodified lines | ||
| 64 | 64 | size_t size, enum dma_data_direction dir, |
| 65 | 65 | enum dma_sync_target target); |
| 66 | 66 | |
| 67 | +dma_addr_t swiotlb_map(struct device *dev, phys_addr_t phys, | |
| 68 | + size_t size, enum dma_data_direction dir, unsigned long attrs); | |
| 69 | + | |
| 67 | 70 | #ifdef CONFIG_SWIOTLB |
| 68 | 71 | extern enum swiotlb_force swiotlb_force; |
| 69 | 72 | extern phys_addr_t io_tlb_start, io_tlb_end; |
| @@ -73,8 +76,6 @@ static inline bool is_swiotlb_buffer(phys_addr_t paddr) · 3 unmodified lines | ||
| 73 | 76 | return paddr >= io_tlb_start && paddr < io_tlb_end; |
| 74 | 77 | } |
| 75 | 78 | |
| 76 | −bool swiotlb_map(struct device *dev, phys_addr_t *phys, dma_addr_t *dma_addr, | |
| 77 | − size_t size, enum dma_data_direction dir, unsigned long attrs); | |
| 78 | 79 | void __init swiotlb_exit(void); |
| 79 | 80 | unsigned int swiotlb_max_segment(void); |
| 80 | 81 | size_t swiotlb_max_mapping_size(struct device *dev); |
| @@ -85,12 +86,6 @@ static inline bool is_swiotlb_buffer(phys_addr_t paddr) · 4 unmodified lines | ||
| 85 | 86 | { |
| 86 | 87 | return false; |
| 87 | 88 | } |
| 88 | −static inline bool swiotlb_map(struct device *dev, phys_addr_t *phys, | |
| 89 | − dma_addr_t *dma_addr, size_t size, enum dma_data_direction dir, | |
| 90 | − unsigned long attrs) | |
| 91 | −{ | |
| 92 | − return false; | |
| 93 | −} | |
| 94 | 89 | static inline void swiotlb_exit(void) |
| 95 | 90 | { |
| 96 | 91 | } |
| @@ -12,8 +12,6 @@ · 11 unmodified lines | ||
| 12 | 12 | #include <linux/time64.h> |
| 13 | 13 | #include <linux/timex.h> |
| 14 | 14 | |
| 15 | −#define TIME_T_MAX (__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1) | |
| 16 | − | |
| 17 | 15 | typedef s32 old_time32_t; |
| 18 | 16 | |
| 19 | 17 | struct old_timespec32 { |
| @@ -73,162 +71,12 @@ struct __kernel_timex; · 53 unmodified lines | ||
| 73 | 71 | int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *); |
| 74 | 72 | int put_old_timex32(struct old_timex32 __user *, const struct __kernel_timex *); |
| 75 | 73 | |
| 76 | −#if __BITS_PER_LONG == 64 | |
| 77 | − | |
| 78 | −/* timespec64 is defined as timespec here */ | |
| 79 | −static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) | |
| 80 | −{ | |
| 81 | − return *(const struct timespec *)&ts64; | |
| 82 | −} | |
| 83 | − | |
| 84 | −static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) | |
| 85 | −{ | |
| 86 | − return *(const struct timespec64 *)&ts; | |
| 87 | −} | |
| 88 | − | |
| 89 | −#else | |
| 90 | −static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) | |
| 91 | −{ | |
| 92 | − struct timespec ret; | |
| 93 | − | |
| 94 | − ret.tv_sec = (time_t)ts64.tv_sec; | |
| 95 | − ret.tv_nsec = ts64.tv_nsec; | |
| 96 | − return ret; | |
| 97 | −} | |
| 98 | − | |
| 99 | −static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) | |
| 100 | −{ | |
| 101 | − struct timespec64 ret; | |
| 102 | − | |
| 103 | − ret.tv_sec = ts.tv_sec; | |
| 104 | − ret.tv_nsec = ts.tv_nsec; | |
| 105 | − return ret; | |
| 106 | −} | |
| 107 | −#endif | |
| 108 | − | |
| 109 | −static inline int timespec_equal(const struct timespec *a, | |
| 110 | − const struct timespec *b) | |
| 111 | −{ | |
| 112 | − return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); | |
| 113 | −} | |
| 114 | − | |
| 115 | −/* | |
| 116 | − * lhs < rhs: return <0 | |
| 117 | − * lhs == rhs: return 0 | |
| 118 | − * lhs > rhs: return >0 | |
| 119 | − */ | |
| 120 | −static inline int timespec_compare(const struct timespec *lhs, const struct timespec *rhs) | |
| 121 | −{ | |
| 122 | − if (lhs->tv_sec < rhs->tv_sec) | |
| 123 | − return -1; | |
| 124 | − if (lhs->tv_sec > rhs->tv_sec) | |
| 125 | − return 1; | |
| 126 | − return lhs->tv_nsec - rhs->tv_nsec; | |
| 127 | −} | |
| 128 | − | |
| 129 | −/* | |
| 130 | − * Returns true if the timespec is norm, false if denorm: | |
| 131 | − */ | |
| 132 | −static inline bool timespec_valid(const struct timespec *ts) | |
| 133 | −{ | |
| 134 | − /* Dates before 1970 are bogus */ | |
| 135 | − if (ts->tv_sec < 0) | |
| 136 | − return false; | |
| 137 | − /* Can't have more nanoseconds then a second */ | |
| 138 | − if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) | |
| 139 | − return false; | |
| 140 | − return true; | |
| 141 | −} | |
| 142 | − | |
| 143 | −/** | |
| 144 | − * timespec_to_ns - Convert timespec to nanoseconds | |
| 145 | − * @ts: pointer to the timespec variable to be converted | |
| 146 | − * | |
| 147 | − * Returns the scalar nanosecond representation of the timespec | |
| 148 | − * parameter. | |
| 149 | − */ | |
| 150 | −static inline s64 timespec_to_ns(const struct timespec *ts) | |
| 151 | −{ | |
| 152 | − return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; | |
| 153 | −} | |
| 154 | − | |
| 155 | 74 | /** |
| 156 | − * ns_to_timespec - Convert nanoseconds to timespec | |
| 157 | − * @nsec: the nanoseconds value to be converted | |
| 158 | − * | |
| 159 | − * Returns the timespec representation of the nsec parameter. | |
| 160 | − */ | |
| 161 | −extern struct timespec ns_to_timespec(const s64 nsec); | |
| 162 | − | |
| 163 | −/** | |
| 164 | − * timespec_add_ns - Adds nanoseconds to a timespec | |
| 165 | − * @a: pointer to timespec to be incremented | |
| 166 | − * @ns: unsigned nanoseconds value to be added | |
| 167 | − * | |
| 168 | − * This must always be inlined because its used from the x86-64 vdso, | |
| 169 | − * which cannot call other kernel functions. | |
| 170 | − */ | |
| 171 | −static __always_inline void timespec_add_ns(struct timespec *a, u64 ns) | |
| 172 | −{ | |
| 173 | − a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns); | |
| 174 | − a->tv_nsec = ns; | |
| 175 | −} | |
| 176 | − | |
| 177 | −static inline unsigned long mktime(const unsigned int year, | |
| 178 | − const unsigned int mon, const unsigned int day, | |
| 179 | − const unsigned int hour, const unsigned int min, | |
| 180 | − const unsigned int sec) | |
| 181 | −{ | |
| 182 | − return mktime64(year, mon, day, hour, min, sec); | |
| 183 | −} | |
| 184 | − | |
| 185 | −static inline bool timeval_valid(const struct timeval *tv) | |
| 186 | −{ | |
| 187 | − /* Dates before 1970 are bogus */ | |
| 188 | − if (tv->tv_sec < 0) | |
| 189 | − return false; | |
| 190 | − | |
| 191 | − /* Can't have more microseconds then a second */ | |
| 192 | − if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC) | |
| 193 | − return false; | |
| 194 | − | |
| 195 | − return true; | |
| 196 | −} | |
| 197 | − | |
| 198 | −/** | |
| 199 | − * timeval_to_ns - Convert timeval to nanoseconds | |
| 200 | − * @ts: pointer to the timeval variable to be converted | |
| 201 | − * | |
| 202 | − * Returns the scalar nanosecond representation of the timeval | |
| 203 | − * parameter. | |
| 204 | − */ | |
| 205 | −static inline s64 timeval_to_ns(const struct timeval *tv) | |
| 206 | −{ | |
| 207 | − return ((s64) tv->tv_sec * NSEC_PER_SEC) + | |
| 208 | − tv->tv_usec * NSEC_PER_USEC; | |
| 209 | −} | |
| 210 | − | |
| 211 | −/** | |
| 212 | − * ns_to_timeval - Convert nanoseconds to timeval | |
| 75 | + * ns_to_kernel_old_timeval - Convert nanoseconds to timeval | |
| 213 | 76 | * @nsec: the nanoseconds value to be converted |
| 214 | 77 | * |
| 215 | 78 | * Returns the timeval representation of the nsec parameter. |
| 216 | 79 | */ |
| 217 | −extern struct timeval ns_to_timeval(const s64 nsec); | |
| 218 | 80 | extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); |
| 219 | 81 | |
| 220 | −/* | |
| 221 | − * Old names for the 32-bit time_t interfaces, these will be removed | |
| 222 | − * when everything uses the new names. | |
| 223 | − */ | |
| 224 | −#define compat_time_t old_time32_t | |
| 225 | −#define compat_timeval old_timeval32 | |
| 226 | −#define compat_timespec old_timespec32 | |
| 227 | −#define compat_itimerspec old_itimerspec32 | |
| 228 | −#define ns_to_compat_timeval ns_to_old_timeval32 | |
| 229 | −#define get_compat_itimerspec64 get_old_itimerspec32 | |
| 230 | −#define put_compat_itimerspec64 put_old_itimerspec32 | |
| 231 | −#define compat_get_timespec64 get_old_timespec32 | |
| 232 | −#define compat_put_timespec64 put_old_timespec32 | |
| 233 | − | |
| 234 | 82 | #endif |
| @@ -11,36 +11,4 @@ static inline unsigned long get_seconds(void) · 10 unmodified lines | ||
| 11 | 11 | return ktime_get_real_seconds(); |
| 12 | 12 | } |
| 13 | 13 | |
| 14 | −static inline void getnstimeofday(struct timespec *ts) | |
| 15 | −{ | |
| 16 | − struct timespec64 ts64; | |
| 17 | − | |
| 18 | − ktime_get_real_ts64(&ts64); | |
| 19 | − *ts = timespec64_to_timespec(ts64); | |
| 20 | −} | |
| 21 | − | |
| 22 | −static inline void ktime_get_ts(struct timespec *ts) | |
| 23 | −{ | |
| 24 | − struct timespec64 ts64; | |
| 25 | − | |
| 26 | − ktime_get_ts64(&ts64); | |
| 27 | − *ts = timespec64_to_timespec(ts64); | |
| 28 | −} | |
| 29 | − | |
| 30 | −static inline void getrawmonotonic(struct timespec *ts) | |
| 31 | −{ | |
| 32 | − struct timespec64 ts64; | |
| 33 | − | |
| 34 | − ktime_get_raw_ts64(&ts64); | |
| 35 | − *ts = timespec64_to_timespec(ts64); | |
| 36 | −} | |
| 37 | − | |
| 38 | −static inline void getboottime(struct timespec *ts) | |
| 39 | −{ | |
| 40 | − struct timespec64 ts64; | |
| 41 | − | |
| 42 | − getboottime64(&ts64); | |
| 43 | − *ts = timespec64_to_timespec(ts64); | |
| 44 | −} | |
| 45 | − | |
| 46 | 14 | #endif |
| @@ -440,7 +440,7 @@ struct synth_event_trace_state { · 439 unmodified lines | ||
| 440 | 440 | struct synth_event *event; |
| 441 | 441 | unsigned int cur_field; |
| 442 | 442 | unsigned int n_u64; |
| 443 | − bool enabled; | |
| 443 | + bool disabled; | |
| 444 | 444 | bool add_next; |
| 445 | 445 | bool add_name; |
| 446 | 446 | }; |
| @@ -225,6 +225,8 @@ struct tty_port_client_operations { · 224 unmodified lines | ||
| 225 | 225 | void (*write_wakeup)(struct tty_port *port); |
| 226 | 226 | }; |
| 227 | 227 | |
| 228 | +extern const struct tty_port_client_operations tty_port_default_client_ops; | |
| 229 | + | |
| 228 | 230 | struct tty_port { |
| 229 | 231 | struct tty_bufhead buf; /* Locked internally */ |
| 230 | 232 | struct tty_struct *tty; /* Back pointer */ |
| @@ -65,11 +65,6 @@ typedef __kernel_ssize_t ssize_t; · 64 unmodified lines | ||
| 65 | 65 | typedef __kernel_ptrdiff_t ptrdiff_t; |
| 66 | 66 | #endif |
| 67 | 67 | |
| 68 | −#ifndef _TIME_T | |
| 69 | −#define _TIME_T | |
| 70 | −typedef __kernel_old_time_t time_t; | |
| 71 | −#endif | |
| 72 | − | |
| 73 | 68 | #ifndef _CLOCK_T |
| 74 | 69 | #define _CLOCK_T |
| 75 | 70 | typedef __kernel_clock_t clock_t; |
| @@ -69,4 +69,7 @@ · 68 unmodified lines | ||
| 69 | 69 | /* Hub needs extra delay after resetting its port. */ |
| 70 | 70 | #define USB_QUIRK_HUB_SLOW_RESET BIT(14) |
| 71 | 71 | |
| 72 | +/* device has blacklisted endpoints */ | |
| 73 | +#define USB_QUIRK_ENDPOINT_BLACKLIST BIT(15) | |
| 74 | + | |
| 72 | 75 | #endif /* __LINUX_USB_QUIRKS_H */ |