mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 05:29:04 -04:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c net/ipv6/ip6_tunnel.c net/ipv6/ip6_vti.c ipv6 tunnel statistic bug fixes conflicting with consolidation into generic sw per-cpu net stats. qlogic conflict between queue counting bug fix and the addition of multiple MAC address support. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
56a4342dfe
347 changed files with 3686 additions and 1780 deletions
|
|
@ -3,6 +3,6 @@
|
|||
|
||||
#include <uapi/linux/auxvec.h>
|
||||
|
||||
#define AT_VECTOR_SIZE_BASE 19 /* NEW_AUX_ENT entries in auxiliary table */
|
||||
#define AT_VECTOR_SIZE_BASE 20 /* NEW_AUX_ENT entries in auxiliary table */
|
||||
/* number of "#define AT_.*" above, minus {AT_NULL, AT_IGNORE, AT_NOTELF} */
|
||||
#endif /* _LINUX_AUXVEC_H */
|
||||
|
|
|
|||
|
|
@ -418,6 +418,7 @@ enum {
|
|||
ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
|
||||
ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */
|
||||
ATA_HORKAGE_ATAPI_DMADIR = (1 << 18), /* device requires dmadir */
|
||||
ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */
|
||||
|
||||
/* DMA mask for user DMA control: User visible values; DO NOT
|
||||
renumber */
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#define USE_CMPXCHG_LOCKREF \
|
||||
(IS_ENABLED(CONFIG_ARCH_USE_CMPXCHG_LOCKREF) && \
|
||||
IS_ENABLED(CONFIG_SMP) && !BLOATED_SPINLOCKS)
|
||||
IS_ENABLED(CONFIG_SMP) && SPINLOCK_SIZE <= 4)
|
||||
|
||||
struct lockref {
|
||||
union {
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ extern int migrate_huge_page_move_mapping(struct address_space *mapping,
|
|||
struct page *newpage, struct page *page);
|
||||
extern int migrate_page_move_mapping(struct address_space *mapping,
|
||||
struct page *newpage, struct page *page,
|
||||
struct buffer_head *head, enum migrate_mode mode);
|
||||
struct buffer_head *head, enum migrate_mode mode,
|
||||
int extra_count);
|
||||
#else
|
||||
|
||||
static inline void putback_lru_pages(struct list_head *l) {}
|
||||
|
|
@ -90,10 +91,19 @@ static inline int migrate_huge_page_move_mapping(struct address_space *mapping,
|
|||
#endif /* CONFIG_MIGRATION */
|
||||
|
||||
#ifdef CONFIG_NUMA_BALANCING
|
||||
extern bool pmd_trans_migrating(pmd_t pmd);
|
||||
extern void wait_migrate_huge_page(struct anon_vma *anon_vma, pmd_t *pmd);
|
||||
extern int migrate_misplaced_page(struct page *page,
|
||||
struct vm_area_struct *vma, int node);
|
||||
extern bool migrate_ratelimited(int node);
|
||||
#else
|
||||
static inline bool pmd_trans_migrating(pmd_t pmd)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static inline void wait_migrate_huge_page(struct anon_vma *anon_vma, pmd_t *pmd)
|
||||
{
|
||||
}
|
||||
static inline int migrate_misplaced_page(struct page *page,
|
||||
struct vm_area_struct *vma, int node)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1317,7 +1317,7 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a
|
|||
#endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
|
||||
|
||||
#if USE_SPLIT_PTE_PTLOCKS
|
||||
#if BLOATED_SPINLOCKS
|
||||
#if ALLOC_SPLIT_PTLOCKS
|
||||
extern bool ptlock_alloc(struct page *page);
|
||||
extern void ptlock_free(struct page *page);
|
||||
|
||||
|
|
@ -1325,7 +1325,7 @@ static inline spinlock_t *ptlock_ptr(struct page *page)
|
|||
{
|
||||
return page->ptl;
|
||||
}
|
||||
#else /* BLOATED_SPINLOCKS */
|
||||
#else /* ALLOC_SPLIT_PTLOCKS */
|
||||
static inline bool ptlock_alloc(struct page *page)
|
||||
{
|
||||
return true;
|
||||
|
|
@ -1339,7 +1339,7 @@ static inline spinlock_t *ptlock_ptr(struct page *page)
|
|||
{
|
||||
return &page->ptl;
|
||||
}
|
||||
#endif /* BLOATED_SPINLOCKS */
|
||||
#endif /* ALLOC_SPLIT_PTLOCKS */
|
||||
|
||||
static inline spinlock_t *pte_lockptr(struct mm_struct *mm, pmd_t *pmd)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ struct address_space;
|
|||
#define USE_SPLIT_PTE_PTLOCKS (NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS)
|
||||
#define USE_SPLIT_PMD_PTLOCKS (USE_SPLIT_PTE_PTLOCKS && \
|
||||
IS_ENABLED(CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK))
|
||||
#define ALLOC_SPLIT_PTLOCKS (SPINLOCK_SIZE > BITS_PER_LONG/8)
|
||||
|
||||
/*
|
||||
* Each physical page in the system has a struct page associated with
|
||||
|
|
@ -155,7 +156,7 @@ struct page {
|
|||
* system if PG_buddy is set.
|
||||
*/
|
||||
#if USE_SPLIT_PTE_PTLOCKS
|
||||
#if BLOATED_SPINLOCKS
|
||||
#if ALLOC_SPLIT_PTLOCKS
|
||||
spinlock_t *ptl;
|
||||
#else
|
||||
spinlock_t ptl;
|
||||
|
|
@ -442,6 +443,14 @@ struct mm_struct {
|
|||
|
||||
/* numa_scan_seq prevents two threads setting pte_numa */
|
||||
int numa_scan_seq;
|
||||
#endif
|
||||
#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
|
||||
/*
|
||||
* An operation with batched TLB flushing is going on. Anything that
|
||||
* can move process memory needs to flush the TLB when moving a
|
||||
* PROT_NONE or PROT_NUMA mapped page.
|
||||
*/
|
||||
bool tlb_flush_pending;
|
||||
#endif
|
||||
struct uprobes_state uprobes_state;
|
||||
};
|
||||
|
|
@ -459,4 +468,45 @@ static inline cpumask_t *mm_cpumask(struct mm_struct *mm)
|
|||
return mm->cpu_vm_mask_var;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
|
||||
/*
|
||||
* Memory barriers to keep this state in sync are graciously provided by
|
||||
* the page table locks, outside of which no page table modifications happen.
|
||||
* The barriers below prevent the compiler from re-ordering the instructions
|
||||
* around the memory barriers that are already present in the code.
|
||||
*/
|
||||
static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
|
||||
{
|
||||
barrier();
|
||||
return mm->tlb_flush_pending;
|
||||
}
|
||||
static inline void set_tlb_flush_pending(struct mm_struct *mm)
|
||||
{
|
||||
mm->tlb_flush_pending = true;
|
||||
|
||||
/*
|
||||
* Guarantee that the tlb_flush_pending store does not leak into the
|
||||
* critical section updating the page tables
|
||||
*/
|
||||
smp_mb__before_spinlock();
|
||||
}
|
||||
/* Clearing is done after a TLB flush, which also provides a barrier. */
|
||||
static inline void clear_tlb_flush_pending(struct mm_struct *mm)
|
||||
{
|
||||
barrier();
|
||||
mm->tlb_flush_pending = false;
|
||||
}
|
||||
#else
|
||||
static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
static inline void set_tlb_flush_pending(struct mm_struct *mm)
|
||||
{
|
||||
}
|
||||
static inline void clear_tlb_flush_pending(struct mm_struct *mm)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_MM_TYPES_H */
|
||||
|
|
|
|||
|
|
@ -1921,6 +1921,15 @@ static inline int dev_parse_header(const struct sk_buff *skb,
|
|||
return dev->header_ops->parse(skb, haddr);
|
||||
}
|
||||
|
||||
static inline int dev_rebuild_header(struct sk_buff *skb)
|
||||
{
|
||||
const struct net_device *dev = skb->dev;
|
||||
|
||||
if (!dev->header_ops || !dev->header_ops->rebuild)
|
||||
return 0;
|
||||
return dev->header_ops->rebuild(skb);
|
||||
}
|
||||
|
||||
typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
|
||||
int register_gifconf(unsigned int family, gifconf_func_t *gifconf);
|
||||
static inline int unregister_gifconf(unsigned int family)
|
||||
|
|
@ -3039,6 +3048,19 @@ static inline void netif_set_gso_max_size(struct net_device *dev,
|
|||
dev->gso_max_size = size;
|
||||
}
|
||||
|
||||
static inline void skb_gso_error_unwind(struct sk_buff *skb, __be16 protocol,
|
||||
int pulled_hlen, u16 mac_offset,
|
||||
int mac_len)
|
||||
{
|
||||
skb->protocol = protocol;
|
||||
skb->encapsulation = 1;
|
||||
skb_push(skb, pulled_hlen);
|
||||
skb_reset_transport_header(skb);
|
||||
skb->mac_header = mac_offset;
|
||||
skb->network_header = skb->mac_header + mac_len;
|
||||
skb->mac_len = mac_len;
|
||||
}
|
||||
|
||||
static inline bool netif_is_macvlan(struct net_device *dev)
|
||||
{
|
||||
return dev->priv_flags & IFF_MACVLAN;
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
__PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \
|
||||
extern __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
|
||||
__PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
|
||||
extern __PCPU_ATTRS(sec) __typeof__(type) name; \
|
||||
__PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \
|
||||
__typeof__(type) name
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ struct pstore_info {
|
|||
char *buf;
|
||||
size_t bufsize;
|
||||
struct mutex read_mutex; /* serialize open/read/close */
|
||||
int flags;
|
||||
int (*open)(struct pstore_info *psi);
|
||||
int (*close)(struct pstore_info *psi);
|
||||
ssize_t (*read)(u64 *id, enum pstore_type_id *type,
|
||||
|
|
@ -70,6 +71,8 @@ struct pstore_info {
|
|||
void *data;
|
||||
};
|
||||
|
||||
#define PSTORE_FLAGS_FRAGILE 1
|
||||
|
||||
#ifdef CONFIG_PSTORE
|
||||
extern int pstore_register(struct pstore_info *);
|
||||
extern bool pstore_cannot_block_path(enum kmsg_dump_reason reason);
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ extern int unregister_reboot_notifier(struct notifier_block *);
|
|||
* Architecture-specific implementations of sys_reboot commands.
|
||||
*/
|
||||
|
||||
extern void migrate_to_reboot_cpu(void);
|
||||
extern void machine_restart(char *cmd);
|
||||
extern void machine_halt(void);
|
||||
extern void machine_power_off(void);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,11 @@ extern int rtnl_trylock(void);
|
|||
extern int rtnl_is_locked(void);
|
||||
#ifdef CONFIG_PROVE_LOCKING
|
||||
extern int lockdep_rtnl_is_held(void);
|
||||
#else
|
||||
static inline int lockdep_rtnl_is_held(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif /* #ifdef CONFIG_PROVE_LOCKING */
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1715,6 +1715,11 @@ static inline void skb_set_mac_header(struct sk_buff *skb, const int offset)
|
|||
skb->mac_header += offset;
|
||||
}
|
||||
|
||||
static inline void skb_pop_mac_header(struct sk_buff *skb)
|
||||
{
|
||||
skb->mac_header = skb->network_header;
|
||||
}
|
||||
|
||||
static inline void skb_probe_transport_header(struct sk_buff *skb,
|
||||
const int offset_hint)
|
||||
{
|
||||
|
|
@ -2621,6 +2626,10 @@ static inline void sw_tx_timestamp(struct sk_buff *skb)
|
|||
* Ethernet MAC Drivers should call this function in their hard_xmit()
|
||||
* function immediately before giving the sk_buff to the MAC hardware.
|
||||
*
|
||||
* Specifically, one should make absolutely sure that this function is
|
||||
* called before TX completion of this packet can trigger. Otherwise
|
||||
* the packet could potentially already be freed.
|
||||
*
|
||||
* @skb: A socket buffer.
|
||||
*/
|
||||
static inline void skb_tx_timestamp(struct sk_buff *skb)
|
||||
|
|
|
|||
Loading…
Reference in a new issue