diff options
| author | Marc Zyngier <marc.zyngier@arm.com> | 2013-02-11 14:03:52 -0500 |
|---|---|---|
| committer | Marc Zyngier <marc.zyngier@arm.com> | 2013-02-11 14:03:52 -0500 |
| commit | 9ae9e2535d7dd1c21d6a7db1a7f2fc507a5e4080 (patch) | |
| tree | f059571830a159f05b8cdf4ec354b01ca7d6bc45 /include/linux | |
| parent | 75431f9d7335daf7fb9e72b3a1539ce610142618 (diff) | |
| parent | 9e02e394c7d7fdc2570a73fb7fc6da3c79f6db2a (diff) | |
Merge branch 'for-arm-soc/arch-timers' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into kvm-arm/timer
Diffstat (limited to 'include/linux')
27 files changed, 267 insertions, 108 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h index 408da9502177..8f7a3d68371a 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
| @@ -297,10 +297,12 @@ enum { | |||
| 297 | ATA_LOG_SATA_NCQ = 0x10, | 297 | ATA_LOG_SATA_NCQ = 0x10, |
| 298 | ATA_LOG_SATA_ID_DEV_DATA = 0x30, | 298 | ATA_LOG_SATA_ID_DEV_DATA = 0x30, |
| 299 | ATA_LOG_SATA_SETTINGS = 0x08, | 299 | ATA_LOG_SATA_SETTINGS = 0x08, |
| 300 | ATA_LOG_DEVSLP_MDAT = 0x30, | 300 | ATA_LOG_DEVSLP_OFFSET = 0x30, |
| 301 | ATA_LOG_DEVSLP_SIZE = 0x08, | ||
| 302 | ATA_LOG_DEVSLP_MDAT = 0x00, | ||
| 301 | ATA_LOG_DEVSLP_MDAT_MASK = 0x1F, | 303 | ATA_LOG_DEVSLP_MDAT_MASK = 0x1F, |
| 302 | ATA_LOG_DEVSLP_DETO = 0x31, | 304 | ATA_LOG_DEVSLP_DETO = 0x01, |
| 303 | ATA_LOG_DEVSLP_VALID = 0x37, | 305 | ATA_LOG_DEVSLP_VALID = 0x07, |
| 304 | ATA_LOG_DEVSLP_VALID_MASK = 0x80, | 306 | ATA_LOG_DEVSLP_VALID_MASK = 0x80, |
| 305 | 307 | ||
| 306 | /* READ/WRITE LONG (obsolete) */ | 308 | /* READ/WRITE LONG (obsolete) */ |
diff --git a/include/linux/audit.h b/include/linux/audit.h index bce729afbcf9..5a6d718adf34 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #define _LINUX_AUDIT_H_ | 24 | #define _LINUX_AUDIT_H_ |
| 25 | 25 | ||
| 26 | #include <linux/sched.h> | 26 | #include <linux/sched.h> |
| 27 | #include <linux/ptrace.h> | ||
| 27 | #include <uapi/linux/audit.h> | 28 | #include <uapi/linux/audit.h> |
| 28 | 29 | ||
| 29 | struct audit_sig_info { | 30 | struct audit_sig_info { |
| @@ -157,7 +158,8 @@ void audit_core_dumps(long signr); | |||
| 157 | 158 | ||
| 158 | static inline void audit_seccomp(unsigned long syscall, long signr, int code) | 159 | static inline void audit_seccomp(unsigned long syscall, long signr, int code) |
| 159 | { | 160 | { |
| 160 | if (unlikely(!audit_dummy_context())) | 161 | /* Force a record to be reported if a signal was delivered. */ |
| 162 | if (signr || unlikely(!audit_dummy_context())) | ||
| 161 | __audit_seccomp(syscall, signr, code); | 163 | __audit_seccomp(syscall, signr, code); |
| 162 | } | 164 | } |
| 163 | 165 | ||
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 8a7096fcb01e..66346521cb65 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
| @@ -161,6 +161,15 @@ clockevents_calc_mult_shift(struct clock_event_device *ce, u32 freq, u32 minsec) | |||
| 161 | extern void clockevents_suspend(void); | 161 | extern void clockevents_suspend(void); |
| 162 | extern void clockevents_resume(void); | 162 | extern void clockevents_resume(void); |
| 163 | 163 | ||
| 164 | #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST | ||
| 165 | #ifdef CONFIG_ARCH_HAS_TICK_BROADCAST | ||
| 166 | extern void tick_broadcast(const struct cpumask *mask); | ||
| 167 | #else | ||
| 168 | #define tick_broadcast NULL | ||
| 169 | #endif | ||
| 170 | extern int tick_receive_broadcast(void); | ||
| 171 | #endif | ||
| 172 | |||
| 164 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | 173 | #ifdef CONFIG_GENERIC_CLOCKEVENTS |
| 165 | extern void clockevents_notify(unsigned long reason, void *arg); | 174 | extern void clockevents_notify(unsigned long reason, void *arg); |
| 166 | #else | 175 | #else |
diff --git a/include/linux/compaction.h b/include/linux/compaction.h index 6ecb6dc2f303..cc7bddeaf553 100644 --- a/include/linux/compaction.h +++ b/include/linux/compaction.h | |||
| @@ -22,7 +22,7 @@ extern int sysctl_extfrag_handler(struct ctl_table *table, int write, | |||
| 22 | extern int fragmentation_index(struct zone *zone, unsigned int order); | 22 | extern int fragmentation_index(struct zone *zone, unsigned int order); |
| 23 | extern unsigned long try_to_compact_pages(struct zonelist *zonelist, | 23 | extern unsigned long try_to_compact_pages(struct zonelist *zonelist, |
| 24 | int order, gfp_t gfp_mask, nodemask_t *mask, | 24 | int order, gfp_t gfp_mask, nodemask_t *mask, |
| 25 | bool sync, bool *contended, struct page **page); | 25 | bool sync, bool *contended); |
| 26 | extern int compact_pgdat(pg_data_t *pgdat, int order); | 26 | extern int compact_pgdat(pg_data_t *pgdat, int order); |
| 27 | extern void reset_isolation_suitable(pg_data_t *pgdat); | 27 | extern void reset_isolation_suitable(pg_data_t *pgdat); |
| 28 | extern unsigned long compaction_suitable(struct zone *zone, int order); | 28 | extern unsigned long compaction_suitable(struct zone *zone, int order); |
| @@ -75,7 +75,7 @@ static inline bool compaction_restarting(struct zone *zone, int order) | |||
| 75 | #else | 75 | #else |
| 76 | static inline unsigned long try_to_compact_pages(struct zonelist *zonelist, | 76 | static inline unsigned long try_to_compact_pages(struct zonelist *zonelist, |
| 77 | int order, gfp_t gfp_mask, nodemask_t *nodemask, | 77 | int order, gfp_t gfp_mask, nodemask_t *nodemask, |
| 78 | bool sync, bool *contended, struct page **page) | 78 | bool sync, bool *contended) |
| 79 | { | 79 | { |
| 80 | return COMPACT_CONTINUE; | 80 | return COMPACT_CONTINUE; |
| 81 | } | 81 | } |
diff --git a/include/linux/cpu_rmap.h b/include/linux/cpu_rmap.h index ac3bbb5b9502..1739510d8994 100644 --- a/include/linux/cpu_rmap.h +++ b/include/linux/cpu_rmap.h | |||
| @@ -13,9 +13,11 @@ | |||
| 13 | #include <linux/cpumask.h> | 13 | #include <linux/cpumask.h> |
| 14 | #include <linux/gfp.h> | 14 | #include <linux/gfp.h> |
| 15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
| 16 | #include <linux/kref.h> | ||
| 16 | 17 | ||
| 17 | /** | 18 | /** |
| 18 | * struct cpu_rmap - CPU affinity reverse-map | 19 | * struct cpu_rmap - CPU affinity reverse-map |
| 20 | * @refcount: kref for object | ||
| 19 | * @size: Number of objects to be reverse-mapped | 21 | * @size: Number of objects to be reverse-mapped |
| 20 | * @used: Number of objects added | 22 | * @used: Number of objects added |
| 21 | * @obj: Pointer to array of object pointers | 23 | * @obj: Pointer to array of object pointers |
| @@ -23,6 +25,7 @@ | |||
| 23 | * based on affinity masks | 25 | * based on affinity masks |
| 24 | */ | 26 | */ |
| 25 | struct cpu_rmap { | 27 | struct cpu_rmap { |
| 28 | struct kref refcount; | ||
| 26 | u16 size, used; | 29 | u16 size, used; |
| 27 | void **obj; | 30 | void **obj; |
| 28 | struct { | 31 | struct { |
| @@ -33,15 +36,7 @@ struct cpu_rmap { | |||
| 33 | #define CPU_RMAP_DIST_INF 0xffff | 36 | #define CPU_RMAP_DIST_INF 0xffff |
| 34 | 37 | ||
| 35 | extern struct cpu_rmap *alloc_cpu_rmap(unsigned int size, gfp_t flags); | 38 | extern struct cpu_rmap *alloc_cpu_rmap(unsigned int size, gfp_t flags); |
| 36 | 39 | extern int cpu_rmap_put(struct cpu_rmap *rmap); | |
| 37 | /** | ||
| 38 | * free_cpu_rmap - free CPU affinity reverse-map | ||
| 39 | * @rmap: Reverse-map allocated with alloc_cpu_rmap(), or %NULL | ||
| 40 | */ | ||
| 41 | static inline void free_cpu_rmap(struct cpu_rmap *rmap) | ||
| 42 | { | ||
| 43 | kfree(rmap); | ||
| 44 | } | ||
| 45 | 40 | ||
| 46 | extern int cpu_rmap_add(struct cpu_rmap *rmap, void *obj); | 41 | extern int cpu_rmap_add(struct cpu_rmap *rmap, void *obj); |
| 47 | extern int cpu_rmap_update(struct cpu_rmap *rmap, u16 index, | 42 | extern int cpu_rmap_update(struct cpu_rmap *rmap, u16 index, |
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 3711b34dc4f9..24cd1037b6d6 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
| @@ -126,9 +126,9 @@ struct cpuidle_driver { | |||
| 126 | struct module *owner; | 126 | struct module *owner; |
| 127 | int refcnt; | 127 | int refcnt; |
| 128 | 128 | ||
| 129 | unsigned int power_specified:1; | ||
| 130 | /* set to 1 to use the core cpuidle time keeping (for all states). */ | 129 | /* set to 1 to use the core cpuidle time keeping (for all states). */ |
| 131 | unsigned int en_core_tk_irqen:1; | 130 | unsigned int en_core_tk_irqen:1; |
| 131 | /* states array must be ordered in decreasing power consumption */ | ||
| 132 | struct cpuidle_state states[CPUIDLE_STATE_MAX]; | 132 | struct cpuidle_state states[CPUIDLE_STATE_MAX]; |
| 133 | int state_count; | 133 | int state_count; |
| 134 | int safe_state_index; | 134 | int safe_state_index; |
diff --git a/include/linux/efi.h b/include/linux/efi.h index 8b84916dc671..7a9498ab3c2d 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h | |||
| @@ -618,18 +618,30 @@ extern int __init efi_setup_pcdp_console(char *); | |||
| 618 | #endif | 618 | #endif |
| 619 | 619 | ||
| 620 | /* | 620 | /* |
| 621 | * We play games with efi_enabled so that the compiler will, if possible, remove | 621 | * We play games with efi_enabled so that the compiler will, if |
| 622 | * EFI-related code altogether. | 622 | * possible, remove EFI-related code altogether. |
| 623 | */ | 623 | */ |
| 624 | #define EFI_BOOT 0 /* Were we booted from EFI? */ | ||
| 625 | #define EFI_SYSTEM_TABLES 1 /* Can we use EFI system tables? */ | ||
| 626 | #define EFI_CONFIG_TABLES 2 /* Can we use EFI config tables? */ | ||
| 627 | #define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */ | ||
| 628 | #define EFI_MEMMAP 4 /* Can we use EFI memory map? */ | ||
| 629 | #define EFI_64BIT 5 /* Is the firmware 64-bit? */ | ||
| 630 | |||
| 624 | #ifdef CONFIG_EFI | 631 | #ifdef CONFIG_EFI |
| 625 | # ifdef CONFIG_X86 | 632 | # ifdef CONFIG_X86 |
| 626 | extern int efi_enabled; | 633 | extern int efi_enabled(int facility); |
| 627 | extern bool efi_64bit; | ||
| 628 | # else | 634 | # else |
| 629 | # define efi_enabled 1 | 635 | static inline int efi_enabled(int facility) |
| 636 | { | ||
| 637 | return 1; | ||
| 638 | } | ||
| 630 | # endif | 639 | # endif |
| 631 | #else | 640 | #else |
| 632 | # define efi_enabled 0 | 641 | static inline int efi_enabled(int facility) |
| 642 | { | ||
| 643 | return 0; | ||
| 644 | } | ||
| 633 | #endif | 645 | #endif |
| 634 | 646 | ||
| 635 | /* | 647 | /* |
diff --git a/include/linux/init.h b/include/linux/init.h index a799273714ac..10ed4f436458 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
| @@ -93,14 +93,6 @@ | |||
| 93 | 93 | ||
| 94 | #define __exit __section(.exit.text) __exitused __cold notrace | 94 | #define __exit __section(.exit.text) __exitused __cold notrace |
| 95 | 95 | ||
| 96 | /* Used for HOTPLUG, but that is always enabled now, so just make them noops */ | ||
| 97 | #define __devinit | ||
| 98 | #define __devinitdata | ||
| 99 | #define __devinitconst | ||
| 100 | #define __devexit | ||
| 101 | #define __devexitdata | ||
| 102 | #define __devexitconst | ||
| 103 | |||
| 104 | /* Used for HOTPLUG_CPU */ | 96 | /* Used for HOTPLUG_CPU */ |
| 105 | #define __cpuinit __section(.cpuinit.text) __cold notrace | 97 | #define __cpuinit __section(.cpuinit.text) __cold notrace |
| 106 | #define __cpuinitdata __section(.cpuinit.data) | 98 | #define __cpuinitdata __section(.cpuinit.data) |
| @@ -337,18 +329,6 @@ void __init parse_early_options(char *cmdline); | |||
| 337 | #define __INITRODATA_OR_MODULE __INITRODATA | 329 | #define __INITRODATA_OR_MODULE __INITRODATA |
| 338 | #endif /*CONFIG_MODULES*/ | 330 | #endif /*CONFIG_MODULES*/ |
| 339 | 331 | ||
| 340 | /* Functions marked as __devexit may be discarded at kernel link time, depending | ||
| 341 | on config options. Newer versions of binutils detect references from | ||
| 342 | retained sections to discarded sections and flag an error. Pointers to | ||
| 343 | __devexit functions must use __devexit_p(function_name), the wrapper will | ||
| 344 | insert either the function_name or NULL, depending on the config options. | ||
| 345 | */ | ||
| 346 | #if defined(MODULE) || defined(CONFIG_HOTPLUG) | ||
| 347 | #define __devexit_p(x) x | ||
| 348 | #else | ||
| 349 | #define __devexit_p(x) NULL | ||
| 350 | #endif | ||
| 351 | |||
| 352 | #ifdef MODULE | 332 | #ifdef MODULE |
| 353 | #define __exit_p(x) x | 333 | #define __exit_p(x) x |
| 354 | #else | 334 | #else |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 5e4e6170f43a..5fa5afeeb759 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -268,11 +268,6 @@ struct irq_affinity_notify { | |||
| 268 | extern int | 268 | extern int |
| 269 | irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify); | 269 | irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify); |
| 270 | 270 | ||
| 271 | static inline void irq_run_affinity_notifiers(void) | ||
| 272 | { | ||
| 273 | flush_scheduled_work(); | ||
| 274 | } | ||
| 275 | |||
| 276 | #else /* CONFIG_SMP */ | 271 | #else /* CONFIG_SMP */ |
| 277 | 272 | ||
| 278 | static inline int irq_set_affinity(unsigned int irq, const struct cpumask *m) | 273 | static inline int irq_set_affinity(unsigned int irq, const struct cpumask *m) |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 83ba0ab2c915..649e5f86b5f0 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -652,8 +652,8 @@ struct ata_device { | |||
| 652 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ | 652 | u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */ |
| 653 | }; | 653 | }; |
| 654 | 654 | ||
| 655 | /* Identify Device Data Log (30h), SATA Settings (page 08h) */ | 655 | /* DEVSLP Timing Variables from Identify Device Data Log */ |
| 656 | u8 sata_settings[ATA_SECT_SIZE]; | 656 | u8 devslp_timing[ATA_LOG_DEVSLP_SIZE]; |
| 657 | 657 | ||
| 658 | /* error history */ | 658 | /* error history */ |
| 659 | int spdn_cnt; | 659 | int spdn_cnt; |
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 00e46376e28f..2bca44b0893c 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
| @@ -524,14 +524,17 @@ static inline void print_irqtrace_events(struct task_struct *curr) | |||
| 524 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 524 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
| 525 | # ifdef CONFIG_PROVE_LOCKING | 525 | # ifdef CONFIG_PROVE_LOCKING |
| 526 | # define rwsem_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 2, NULL, i) | 526 | # define rwsem_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 2, NULL, i) |
| 527 | # define rwsem_acquire_nest(l, s, t, n, i) lock_acquire(l, s, t, 0, 2, n, i) | ||
| 527 | # define rwsem_acquire_read(l, s, t, i) lock_acquire(l, s, t, 1, 2, NULL, i) | 528 | # define rwsem_acquire_read(l, s, t, i) lock_acquire(l, s, t, 1, 2, NULL, i) |
| 528 | # else | 529 | # else |
| 529 | # define rwsem_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 1, NULL, i) | 530 | # define rwsem_acquire(l, s, t, i) lock_acquire(l, s, t, 0, 1, NULL, i) |
| 531 | # define rwsem_acquire_nest(l, s, t, n, i) lock_acquire(l, s, t, 0, 1, n, i) | ||
| 530 | # define rwsem_acquire_read(l, s, t, i) lock_acquire(l, s, t, 1, 1, NULL, i) | 532 | # define rwsem_acquire_read(l, s, t, i) lock_acquire(l, s, t, 1, 1, NULL, i) |
| 531 | # endif | 533 | # endif |
| 532 | # define rwsem_release(l, n, i) lock_release(l, n, i) | 534 | # define rwsem_release(l, n, i) lock_release(l, n, i) |
| 533 | #else | 535 | #else |
| 534 | # define rwsem_acquire(l, s, t, i) do { } while (0) | 536 | # define rwsem_acquire(l, s, t, i) do { } while (0) |
| 537 | # define rwsem_acquire_nest(l, s, t, n, i) do { } while (0) | ||
| 535 | # define rwsem_acquire_read(l, s, t, i) do { } while (0) | 538 | # define rwsem_acquire_read(l, s, t, i) do { } while (0) |
| 536 | # define rwsem_release(l, n, i) do { } while (0) | 539 | # define rwsem_release(l, n, i) do { } while (0) |
| 537 | #endif | 540 | #endif |
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h index 2138bd33021a..e53dcfeaee69 100644 --- a/include/linux/mfd/abx500.h +++ b/include/linux/mfd/abx500.h | |||
| @@ -272,8 +272,6 @@ struct abx500_bm_data { | |||
| 272 | const struct abx500_fg_parameters *fg_params; | 272 | const struct abx500_fg_parameters *fg_params; |
| 273 | }; | 273 | }; |
| 274 | 274 | ||
| 275 | extern struct abx500_bm_data ab8500_bm_data; | ||
| 276 | |||
| 277 | enum { | 275 | enum { |
| 278 | NTC_EXTERNAL = 0, | 276 | NTC_EXTERNAL = 0, |
| 279 | NTC_INTERNAL, | 277 | NTC_INTERNAL, |
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h index 44310c98ee6e..9bd037df97d9 100644 --- a/include/linux/mfd/abx500/ab8500-bm.h +++ b/include/linux/mfd/abx500/ab8500-bm.h | |||
| @@ -422,7 +422,10 @@ struct ab8500_chargalg_platform_data { | |||
| 422 | struct ab8500_btemp; | 422 | struct ab8500_btemp; |
| 423 | struct ab8500_gpadc; | 423 | struct ab8500_gpadc; |
| 424 | struct ab8500_fg; | 424 | struct ab8500_fg; |
| 425 | |||
| 425 | #ifdef CONFIG_AB8500_BM | 426 | #ifdef CONFIG_AB8500_BM |
| 427 | extern struct abx500_bm_data ab8500_bm_data; | ||
| 428 | |||
| 426 | void ab8500_fg_reinit(void); | 429 | void ab8500_fg_reinit(void); |
| 427 | void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA); | 430 | void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA); |
| 428 | struct ab8500_btemp *ab8500_btemp_get(void); | 431 | struct ab8500_btemp *ab8500_btemp_get(void); |
| @@ -434,31 +437,7 @@ int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res); | |||
| 434 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di); | 437 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di); |
| 435 | 438 | ||
| 436 | #else | 439 | #else |
| 437 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di) | 440 | static struct abx500_bm_data ab8500_bm_data; |
| 438 | { | ||
| 439 | } | ||
| 440 | static void ab8500_fg_reinit(void) | ||
| 441 | { | ||
| 442 | } | ||
| 443 | static void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA) | ||
| 444 | { | ||
| 445 | } | ||
| 446 | static struct ab8500_btemp *ab8500_btemp_get(void) | ||
| 447 | { | ||
| 448 | return NULL; | ||
| 449 | } | ||
| 450 | static int ab8500_btemp_get_batctrl_temp(struct ab8500_btemp *btemp) | ||
| 451 | { | ||
| 452 | return 0; | ||
| 453 | } | ||
| 454 | struct ab8500_fg *ab8500_fg_get(void) | ||
| 455 | { | ||
| 456 | return NULL; | ||
| 457 | } | ||
| 458 | static int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev) | ||
| 459 | { | ||
| 460 | return -ENODEV; | ||
| 461 | } | ||
| 462 | 441 | ||
| 463 | static inline int ab8500_fg_inst_curr_start(struct ab8500_fg *di) | 442 | static inline int ab8500_fg_inst_curr_start(struct ab8500_fg *di) |
| 464 | { | 443 | { |
diff --git a/include/linux/mfd/da9052/da9052.h b/include/linux/mfd/da9052/da9052.h index 86dd93de6ff2..786d02eb79d2 100644 --- a/include/linux/mfd/da9052/da9052.h +++ b/include/linux/mfd/da9052/da9052.h | |||
| @@ -99,6 +99,9 @@ struct da9052 { | |||
| 99 | u8 chip_id; | 99 | u8 chip_id; |
| 100 | 100 | ||
| 101 | int chip_irq; | 101 | int chip_irq; |
| 102 | |||
| 103 | /* SOC I/O transfer related fixes for DA9052/53 */ | ||
| 104 | int (*fix_io) (struct da9052 *da9052, unsigned char reg); | ||
| 102 | }; | 105 | }; |
| 103 | 106 | ||
| 104 | /* ADC API */ | 107 | /* ADC API */ |
| @@ -113,32 +116,87 @@ static inline int da9052_reg_read(struct da9052 *da9052, unsigned char reg) | |||
| 113 | ret = regmap_read(da9052->regmap, reg, &val); | 116 | ret = regmap_read(da9052->regmap, reg, &val); |
| 114 | if (ret < 0) | 117 | if (ret < 0) |
| 115 | return ret; | 118 | return ret; |
| 119 | |||
| 120 | if (da9052->fix_io) { | ||
| 121 | ret = da9052->fix_io(da9052, reg); | ||
| 122 | if (ret < 0) | ||
| 123 | return ret; | ||
| 124 | } | ||
| 125 | |||
| 116 | return val; | 126 | return val; |
| 117 | } | 127 | } |
| 118 | 128 | ||
| 119 | static inline int da9052_reg_write(struct da9052 *da9052, unsigned char reg, | 129 | static inline int da9052_reg_write(struct da9052 *da9052, unsigned char reg, |
| 120 | unsigned char val) | 130 | unsigned char val) |
| 121 | { | 131 | { |
| 122 | return regmap_write(da9052->regmap, reg, val); | 132 | int ret; |
| 133 | |||
| 134 | ret = regmap_write(da9052->regmap, reg, val); | ||
| 135 | if (ret < 0) | ||
| 136 | return ret; | ||
| 137 | |||
| 138 | if (da9052->fix_io) { | ||
| 139 | ret = da9052->fix_io(da9052, reg); | ||
| 140 | if (ret < 0) | ||
| 141 | return ret; | ||
| 142 | } | ||
| 143 | |||
| 144 | return ret; | ||
| 123 | } | 145 | } |
| 124 | 146 | ||
| 125 | static inline int da9052_group_read(struct da9052 *da9052, unsigned char reg, | 147 | static inline int da9052_group_read(struct da9052 *da9052, unsigned char reg, |
| 126 | unsigned reg_cnt, unsigned char *val) | 148 | unsigned reg_cnt, unsigned char *val) |
| 127 | { | 149 | { |
| 128 | return regmap_bulk_read(da9052->regmap, reg, val, reg_cnt); | 150 | int ret; |
| 151 | |||
| 152 | ret = regmap_bulk_read(da9052->regmap, reg, val, reg_cnt); | ||
| 153 | if (ret < 0) | ||
| 154 | return ret; | ||
| 155 | |||
| 156 | if (da9052->fix_io) { | ||
| 157 | ret = da9052->fix_io(da9052, reg); | ||
| 158 | if (ret < 0) | ||
| 159 | return ret; | ||
| 160 | } | ||
| 161 | |||
| 162 | return ret; | ||
| 129 | } | 163 | } |
| 130 | 164 | ||
| 131 | static inline int da9052_group_write(struct da9052 *da9052, unsigned char reg, | 165 | static inline int da9052_group_write(struct da9052 *da9052, unsigned char reg, |
| 132 | unsigned reg_cnt, unsigned char *val) | 166 | unsigned reg_cnt, unsigned char *val) |
| 133 | { | 167 | { |
| 134 | return regmap_raw_write(da9052->regmap, reg, val, reg_cnt); | 168 | int ret; |
| 169 | |||
| 170 | ret = regmap_raw_write(da9052->regmap, reg, val, reg_cnt); | ||
| 171 | if (ret < 0) | ||
| 172 | return ret; | ||
| 173 | |||
| 174 | if (da9052->fix_io) { | ||
| 175 | ret = da9052->fix_io(da9052, reg); | ||
| 176 | if (ret < 0) | ||
| 177 | return ret; | ||
| 178 | } | ||
| 179 | |||
| 180 | return ret; | ||
| 135 | } | 181 | } |
| 136 | 182 | ||
| 137 | static inline int da9052_reg_update(struct da9052 *da9052, unsigned char reg, | 183 | static inline int da9052_reg_update(struct da9052 *da9052, unsigned char reg, |
| 138 | unsigned char bit_mask, | 184 | unsigned char bit_mask, |
| 139 | unsigned char reg_val) | 185 | unsigned char reg_val) |
| 140 | { | 186 | { |
| 141 | return regmap_update_bits(da9052->regmap, reg, bit_mask, reg_val); | 187 | int ret; |
| 188 | |||
| 189 | ret = regmap_update_bits(da9052->regmap, reg, bit_mask, reg_val); | ||
| 190 | if (ret < 0) | ||
| 191 | return ret; | ||
| 192 | |||
| 193 | if (da9052->fix_io) { | ||
| 194 | ret = da9052->fix_io(da9052, reg); | ||
| 195 | if (ret < 0) | ||
| 196 | return ret; | ||
| 197 | } | ||
| 198 | |||
| 199 | return ret; | ||
| 142 | } | 200 | } |
| 143 | 201 | ||
| 144 | int da9052_device_init(struct da9052 *da9052, u8 chip_id); | 202 | int da9052_device_init(struct da9052 *da9052, u8 chip_id); |
diff --git a/include/linux/mfd/da9052/reg.h b/include/linux/mfd/da9052/reg.h index b97f7309d7f6..c4dd3a8add21 100644 --- a/include/linux/mfd/da9052/reg.h +++ b/include/linux/mfd/da9052/reg.h | |||
| @@ -34,6 +34,9 @@ | |||
| 34 | #define DA9052_STATUS_C_REG 3 | 34 | #define DA9052_STATUS_C_REG 3 |
| 35 | #define DA9052_STATUS_D_REG 4 | 35 | #define DA9052_STATUS_D_REG 4 |
| 36 | 36 | ||
| 37 | /* PARK REGISTER */ | ||
| 38 | #define DA9052_PARK_REGISTER DA9052_STATUS_D_REG | ||
| 39 | |||
| 37 | /* EVENT REGISTERS */ | 40 | /* EVENT REGISTERS */ |
| 38 | #define DA9052_EVENT_A_REG 5 | 41 | #define DA9052_EVENT_A_REG 5 |
| 39 | #define DA9052_EVENT_B_REG 6 | 42 | #define DA9052_EVENT_B_REG 6 |
diff --git a/include/linux/mfd/rtsx_common.h b/include/linux/mfd/rtsx_common.h index a8d393e3066b..2b13970596f5 100644 --- a/include/linux/mfd/rtsx_common.h +++ b/include/linux/mfd/rtsx_common.h | |||
| @@ -38,6 +38,9 @@ | |||
| 38 | #define RTSX_SD_CARD 0 | 38 | #define RTSX_SD_CARD 0 |
| 39 | #define RTSX_MS_CARD 1 | 39 | #define RTSX_MS_CARD 1 |
| 40 | 40 | ||
| 41 | #define CLK_TO_DIV_N 0 | ||
| 42 | #define DIV_N_TO_CLK 1 | ||
| 43 | |||
| 41 | struct platform_device; | 44 | struct platform_device; |
| 42 | 45 | ||
| 43 | struct rtsx_slot { | 46 | struct rtsx_slot { |
diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h index 060b721fcbfb..4b117a3f54d4 100644 --- a/include/linux/mfd/rtsx_pci.h +++ b/include/linux/mfd/rtsx_pci.h | |||
| @@ -158,10 +158,9 @@ | |||
| 158 | #define SG_TRANS_DATA (0x02 << 4) | 158 | #define SG_TRANS_DATA (0x02 << 4) |
| 159 | #define SG_LINK_DESC (0x03 << 4) | 159 | #define SG_LINK_DESC (0x03 << 4) |
| 160 | 160 | ||
| 161 | /* SD bank voltage */ | 161 | /* Output voltage */ |
| 162 | #define SD_IO_3V3 0 | 162 | #define OUTPUT_3V3 0 |
| 163 | #define SD_IO_1V8 1 | 163 | #define OUTPUT_1V8 1 |
| 164 | |||
| 165 | 164 | ||
| 166 | /* Card Clock Enable Register */ | 165 | /* Card Clock Enable Register */ |
| 167 | #define SD_CLK_EN 0x04 | 166 | #define SD_CLK_EN 0x04 |
| @@ -201,6 +200,20 @@ | |||
| 201 | #define CHANGE_CLK 0x01 | 200 | #define CHANGE_CLK 0x01 |
| 202 | 201 | ||
| 203 | /* LDO_CTL */ | 202 | /* LDO_CTL */ |
| 203 | #define BPP_ASIC_1V7 0x00 | ||
| 204 | #define BPP_ASIC_1V8 0x01 | ||
| 205 | #define BPP_ASIC_1V9 0x02 | ||
| 206 | #define BPP_ASIC_2V0 0x03 | ||
| 207 | #define BPP_ASIC_2V7 0x04 | ||
| 208 | #define BPP_ASIC_2V8 0x05 | ||
| 209 | #define BPP_ASIC_3V2 0x06 | ||
| 210 | #define BPP_ASIC_3V3 0x07 | ||
| 211 | #define BPP_REG_TUNED18 0x07 | ||
| 212 | #define BPP_TUNED18_SHIFT_8402 5 | ||
| 213 | #define BPP_TUNED18_SHIFT_8411 4 | ||
| 214 | #define BPP_PAD_MASK 0x04 | ||
| 215 | #define BPP_PAD_3V3 0x04 | ||
| 216 | #define BPP_PAD_1V8 0x00 | ||
| 204 | #define BPP_LDO_POWB 0x03 | 217 | #define BPP_LDO_POWB 0x03 |
| 205 | #define BPP_LDO_ON 0x00 | 218 | #define BPP_LDO_ON 0x00 |
| 206 | #define BPP_LDO_SUSPEND 0x02 | 219 | #define BPP_LDO_SUSPEND 0x02 |
| @@ -688,7 +701,10 @@ struct pcr_ops { | |||
| 688 | int (*disable_auto_blink)(struct rtsx_pcr *pcr); | 701 | int (*disable_auto_blink)(struct rtsx_pcr *pcr); |
| 689 | int (*card_power_on)(struct rtsx_pcr *pcr, int card); | 702 | int (*card_power_on)(struct rtsx_pcr *pcr, int card); |
| 690 | int (*card_power_off)(struct rtsx_pcr *pcr, int card); | 703 | int (*card_power_off)(struct rtsx_pcr *pcr, int card); |
| 704 | int (*switch_output_voltage)(struct rtsx_pcr *pcr, | ||
| 705 | u8 voltage); | ||
| 691 | unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); | 706 | unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); |
| 707 | int (*conv_clk_and_div_n)(int clk, int dir); | ||
| 692 | }; | 708 | }; |
| 693 | 709 | ||
| 694 | enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; | 710 | enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; |
| @@ -783,6 +799,7 @@ int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock, | |||
| 783 | u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk); | 799 | u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk); |
| 784 | int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card); | 800 | int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card); |
| 785 | int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card); | 801 | int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card); |
| 802 | int rtsx_pci_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage); | ||
| 786 | unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr); | 803 | unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr); |
| 787 | void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr); | 804 | void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr); |
| 788 | 805 | ||
diff --git a/include/linux/mm.h b/include/linux/mm.h index 63204078f72b..66e2f7c61e5c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -455,7 +455,6 @@ void put_pages_list(struct list_head *pages); | |||
| 455 | 455 | ||
| 456 | void split_page(struct page *page, unsigned int order); | 456 | void split_page(struct page *page, unsigned int order); |
| 457 | int split_free_page(struct page *page); | 457 | int split_free_page(struct page *page); |
| 458 | int capture_free_page(struct page *page, int alloc_order, int migratetype); | ||
| 459 | 458 | ||
| 460 | /* | 459 | /* |
| 461 | * Compound pages have a destructor function. Provide a | 460 | * Compound pages have a destructor function. Provide a |
diff --git a/include/linux/module.h b/include/linux/module.h index 7760c6d344a3..1375ee3f03aa 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
| @@ -199,11 +199,11 @@ struct module_use { | |||
| 199 | struct module *source, *target; | 199 | struct module *source, *target; |
| 200 | }; | 200 | }; |
| 201 | 201 | ||
| 202 | enum module_state | 202 | enum module_state { |
| 203 | { | 203 | MODULE_STATE_LIVE, /* Normal state. */ |
| 204 | MODULE_STATE_LIVE, | 204 | MODULE_STATE_COMING, /* Full formed, running module_init. */ |
| 205 | MODULE_STATE_COMING, | 205 | MODULE_STATE_GOING, /* Going away. */ |
| 206 | MODULE_STATE_GOING, | 206 | MODULE_STATE_UNFORMED, /* Still setting it up. */ |
| 207 | }; | 207 | }; |
| 208 | 208 | ||
| 209 | /** | 209 | /** |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index c599e4782d45..9ef07d0868b6 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -60,6 +60,9 @@ struct wireless_dev; | |||
| 60 | #define SET_ETHTOOL_OPS(netdev,ops) \ | 60 | #define SET_ETHTOOL_OPS(netdev,ops) \ |
| 61 | ( (netdev)->ethtool_ops = (ops) ) | 61 | ( (netdev)->ethtool_ops = (ops) ) |
| 62 | 62 | ||
| 63 | extern void netdev_set_default_ethtool_ops(struct net_device *dev, | ||
| 64 | const struct ethtool_ops *ops); | ||
| 65 | |||
| 63 | /* hardware address assignment types */ | 66 | /* hardware address assignment types */ |
| 64 | #define NET_ADDR_PERM 0 /* address is permanent (default) */ | 67 | #define NET_ADDR_PERM 0 /* address is permanent (default) */ |
| 65 | #define NET_ADDR_RANDOM 1 /* address is generated randomly */ | 68 | #define NET_ADDR_RANDOM 1 /* address is generated randomly */ |
diff --git a/include/linux/platform_data/imx-iram.h b/include/linux/platform_data/imx-iram.h new file mode 100644 index 000000000000..022690c33702 --- /dev/null +++ b/include/linux/platform_data/imx-iram.h | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or | ||
| 5 | * modify it under the terms of the GNU General Public License | ||
| 6 | * as published by the Free Software Foundation; either version 2 | ||
| 7 | * of the License, or (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License | ||
| 15 | * along with this program; if not, write to the Free Software | ||
| 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
| 17 | * MA 02110-1301, USA. | ||
| 18 | */ | ||
| 19 | #include <linux/errno.h> | ||
| 20 | |||
| 21 | #ifdef CONFIG_IRAM_ALLOC | ||
| 22 | |||
| 23 | int __init iram_init(unsigned long base, unsigned long size); | ||
| 24 | void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr); | ||
| 25 | void iram_free(unsigned long dma_addr, unsigned int size); | ||
| 26 | |||
| 27 | #else | ||
| 28 | |||
| 29 | static inline int __init iram_init(unsigned long base, unsigned long size) | ||
| 30 | { | ||
| 31 | return -ENOMEM; | ||
| 32 | } | ||
| 33 | |||
| 34 | static inline void __iomem *iram_alloc(unsigned int size, unsigned long *dma_addr) | ||
| 35 | { | ||
| 36 | return NULL; | ||
| 37 | } | ||
| 38 | |||
| 39 | static inline void iram_free(unsigned long base, unsigned long size) {} | ||
| 40 | |||
| 41 | #endif | ||
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 1693775ecfe8..89573a33ab3c 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
| @@ -45,7 +45,6 @@ extern long arch_ptrace(struct task_struct *child, long request, | |||
| 45 | extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); | 45 | extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); |
| 46 | extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); | 46 | extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); |
| 47 | extern void ptrace_disable(struct task_struct *); | 47 | extern void ptrace_disable(struct task_struct *); |
| 48 | extern int ptrace_check_attach(struct task_struct *task, bool ignore_state); | ||
| 49 | extern int ptrace_request(struct task_struct *child, long request, | 48 | extern int ptrace_request(struct task_struct *child, long request, |
| 50 | unsigned long addr, unsigned long data); | 49 | unsigned long addr, unsigned long data); |
| 51 | extern void ptrace_notify(int exit_code); | 50 | extern void ptrace_notify(int exit_code); |
diff --git a/include/linux/rbtree_augmented.h b/include/linux/rbtree_augmented.h index 2ac60c9cf644..fea49b5da12a 100644 --- a/include/linux/rbtree_augmented.h +++ b/include/linux/rbtree_augmented.h | |||
| @@ -123,9 +123,9 @@ __rb_change_child(struct rb_node *old, struct rb_node *new, | |||
| 123 | extern void __rb_erase_color(struct rb_node *parent, struct rb_root *root, | 123 | extern void __rb_erase_color(struct rb_node *parent, struct rb_root *root, |
| 124 | void (*augment_rotate)(struct rb_node *old, struct rb_node *new)); | 124 | void (*augment_rotate)(struct rb_node *old, struct rb_node *new)); |
| 125 | 125 | ||
| 126 | static __always_inline void | 126 | static __always_inline struct rb_node * |
| 127 | rb_erase_augmented(struct rb_node *node, struct rb_root *root, | 127 | __rb_erase_augmented(struct rb_node *node, struct rb_root *root, |
| 128 | const struct rb_augment_callbacks *augment) | 128 | const struct rb_augment_callbacks *augment) |
| 129 | { | 129 | { |
| 130 | struct rb_node *child = node->rb_right, *tmp = node->rb_left; | 130 | struct rb_node *child = node->rb_right, *tmp = node->rb_left; |
| 131 | struct rb_node *parent, *rebalance; | 131 | struct rb_node *parent, *rebalance; |
| @@ -217,6 +217,14 @@ rb_erase_augmented(struct rb_node *node, struct rb_root *root, | |||
| 217 | } | 217 | } |
| 218 | 218 | ||
| 219 | augment->propagate(tmp, NULL); | 219 | augment->propagate(tmp, NULL); |
| 220 | return rebalance; | ||
| 221 | } | ||
| 222 | |||
| 223 | static __always_inline void | ||
| 224 | rb_erase_augmented(struct rb_node *node, struct rb_root *root, | ||
| 225 | const struct rb_augment_callbacks *augment) | ||
| 226 | { | ||
| 227 | struct rb_node *rebalance = __rb_erase_augmented(node, root, augment); | ||
| 220 | if (rebalance) | 228 | if (rebalance) |
| 221 | __rb_erase_color(rebalance, root, augment->rotate); | 229 | __rb_erase_color(rebalance, root, augment->rotate); |
| 222 | } | 230 | } |
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 54bd7cd7ecbd..8da67d625e13 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h | |||
| @@ -125,8 +125,17 @@ extern void downgrade_write(struct rw_semaphore *sem); | |||
| 125 | */ | 125 | */ |
| 126 | extern void down_read_nested(struct rw_semaphore *sem, int subclass); | 126 | extern void down_read_nested(struct rw_semaphore *sem, int subclass); |
| 127 | extern void down_write_nested(struct rw_semaphore *sem, int subclass); | 127 | extern void down_write_nested(struct rw_semaphore *sem, int subclass); |
| 128 | extern void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest_lock); | ||
| 129 | |||
| 130 | # define down_write_nest_lock(sem, nest_lock) \ | ||
| 131 | do { \ | ||
| 132 | typecheck(struct lockdep_map *, &(nest_lock)->dep_map); \ | ||
| 133 | _down_write_nest_lock(sem, &(nest_lock)->dep_map); \ | ||
| 134 | } while (0); | ||
| 135 | |||
| 128 | #else | 136 | #else |
| 129 | # define down_read_nested(sem, subclass) down_read(sem) | 137 | # define down_read_nested(sem, subclass) down_read(sem) |
| 138 | # define down_write_nest_lock(sem, nest_lock) down_write(sem) | ||
| 130 | # define down_write_nested(sem, subclass) down_write(sem) | 139 | # define down_write_nested(sem, subclass) down_write(sem) |
| 131 | #endif | 140 | #endif |
| 132 | 141 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 206bb089c06b..d2112477ff5e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1810,6 +1810,7 @@ extern void thread_group_cputime_adjusted(struct task_struct *p, cputime_t *ut, | |||
| 1810 | #define PF_MEMALLOC 0x00000800 /* Allocating memory */ | 1810 | #define PF_MEMALLOC 0x00000800 /* Allocating memory */ |
| 1811 | #define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */ | 1811 | #define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */ |
| 1812 | #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ | 1812 | #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ |
| 1813 | #define PF_USED_ASYNC 0x00004000 /* used async_schedule*(), used by module init */ | ||
| 1813 | #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ | 1814 | #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ |
| 1814 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ | 1815 | #define PF_FROZEN 0x00010000 /* frozen for system suspend */ |
| 1815 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ | 1816 | #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ |
| @@ -2713,7 +2714,16 @@ static inline void thread_group_cputime_init(struct signal_struct *sig) | |||
| 2713 | extern void recalc_sigpending_and_wake(struct task_struct *t); | 2714 | extern void recalc_sigpending_and_wake(struct task_struct *t); |
| 2714 | extern void recalc_sigpending(void); | 2715 | extern void recalc_sigpending(void); |
| 2715 | 2716 | ||
| 2716 | extern void signal_wake_up(struct task_struct *t, int resume_stopped); | 2717 | extern void signal_wake_up_state(struct task_struct *t, unsigned int state); |
| 2718 | |||
| 2719 | static inline void signal_wake_up(struct task_struct *t, bool resume) | ||
| 2720 | { | ||
| 2721 | signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0); | ||
| 2722 | } | ||
| 2723 | static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume) | ||
| 2724 | { | ||
| 2725 | signal_wake_up_state(t, resume ? __TASK_TRACED : 0); | ||
| 2726 | } | ||
| 2717 | 2727 | ||
| 2718 | /* | 2728 | /* |
| 2719 | * Wrappers for p->thread_info->cpu access. No-op on UP. | 2729 | * Wrappers for p->thread_info->cpu access. No-op on UP. |
diff --git a/include/linux/security.h b/include/linux/security.h index 0f6afc657f77..eee7478cda70 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -989,17 +989,29 @@ static inline void security_free_mnt_opts(struct security_mnt_opts *opts) | |||
| 989 | * tells the LSM to decrement the number of secmark labeling rules loaded | 989 | * tells the LSM to decrement the number of secmark labeling rules loaded |
| 990 | * @req_classify_flow: | 990 | * @req_classify_flow: |
| 991 | * Sets the flow's sid to the openreq sid. | 991 | * Sets the flow's sid to the openreq sid. |
| 992 | * @tun_dev_alloc_security: | ||
| 993 | * This hook allows a module to allocate a security structure for a TUN | ||
| 994 | * device. | ||
| 995 | * @security pointer to a security structure pointer. | ||
| 996 | * Returns a zero on success, negative values on failure. | ||
| 997 | * @tun_dev_free_security: | ||
| 998 | * This hook allows a module to free the security structure for a TUN | ||
| 999 | * device. | ||
| 1000 | * @security pointer to the TUN device's security structure | ||
| 992 | * @tun_dev_create: | 1001 | * @tun_dev_create: |
| 993 | * Check permissions prior to creating a new TUN device. | 1002 | * Check permissions prior to creating a new TUN device. |
| 994 | * @tun_dev_post_create: | 1003 | * @tun_dev_attach_queue: |
| 995 | * This hook allows a module to update or allocate a per-socket security | 1004 | * Check permissions prior to attaching to a TUN device queue. |
| 996 | * structure. | 1005 | * @security pointer to the TUN device's security structure. |
| 997 | * @sk contains the newly created sock structure. | ||
| 998 | * @tun_dev_attach: | 1006 | * @tun_dev_attach: |
| 999 | * Check permissions prior to attaching to a persistent TUN device. This | 1007 | * This hook can be used by the module to update any security state |
| 1000 | * hook can also be used by the module to update any security state | ||
| 1001 | * associated with the TUN device's sock structure. | 1008 | * associated with the TUN device's sock structure. |
| 1002 | * @sk contains the existing sock structure. | 1009 | * @sk contains the existing sock structure. |
| 1010 | * @security pointer to the TUN device's security structure. | ||
| 1011 | * @tun_dev_open: | ||
| 1012 | * This hook can be used by the module to update any security state | ||
| 1013 | * associated with the TUN device's security structure. | ||
| 1014 | * @security pointer to the TUN devices's security structure. | ||
| 1003 | * | 1015 | * |
| 1004 | * Security hooks for XFRM operations. | 1016 | * Security hooks for XFRM operations. |
| 1005 | * | 1017 | * |
| @@ -1620,9 +1632,12 @@ struct security_operations { | |||
| 1620 | void (*secmark_refcount_inc) (void); | 1632 | void (*secmark_refcount_inc) (void); |
| 1621 | void (*secmark_refcount_dec) (void); | 1633 | void (*secmark_refcount_dec) (void); |
| 1622 | void (*req_classify_flow) (const struct request_sock *req, struct flowi *fl); | 1634 | void (*req_classify_flow) (const struct request_sock *req, struct flowi *fl); |
| 1623 | int (*tun_dev_create)(void); | 1635 | int (*tun_dev_alloc_security) (void **security); |
| 1624 | void (*tun_dev_post_create)(struct sock *sk); | 1636 | void (*tun_dev_free_security) (void *security); |
| 1625 | int (*tun_dev_attach)(struct sock *sk); | 1637 | int (*tun_dev_create) (void); |
| 1638 | int (*tun_dev_attach_queue) (void *security); | ||
| 1639 | int (*tun_dev_attach) (struct sock *sk, void *security); | ||
| 1640 | int (*tun_dev_open) (void *security); | ||
| 1626 | #endif /* CONFIG_SECURITY_NETWORK */ | 1641 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 1627 | 1642 | ||
| 1628 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | 1643 | #ifdef CONFIG_SECURITY_NETWORK_XFRM |
| @@ -2566,9 +2581,12 @@ void security_inet_conn_established(struct sock *sk, | |||
| 2566 | int security_secmark_relabel_packet(u32 secid); | 2581 | int security_secmark_relabel_packet(u32 secid); |
| 2567 | void security_secmark_refcount_inc(void); | 2582 | void security_secmark_refcount_inc(void); |
| 2568 | void security_secmark_refcount_dec(void); | 2583 | void security_secmark_refcount_dec(void); |
| 2584 | int security_tun_dev_alloc_security(void **security); | ||
| 2585 | void security_tun_dev_free_security(void *security); | ||
| 2569 | int security_tun_dev_create(void); | 2586 | int security_tun_dev_create(void); |
| 2570 | void security_tun_dev_post_create(struct sock *sk); | 2587 | int security_tun_dev_attach_queue(void *security); |
| 2571 | int security_tun_dev_attach(struct sock *sk); | 2588 | int security_tun_dev_attach(struct sock *sk, void *security); |
| 2589 | int security_tun_dev_open(void *security); | ||
| 2572 | 2590 | ||
| 2573 | #else /* CONFIG_SECURITY_NETWORK */ | 2591 | #else /* CONFIG_SECURITY_NETWORK */ |
| 2574 | static inline int security_unix_stream_connect(struct sock *sock, | 2592 | static inline int security_unix_stream_connect(struct sock *sock, |
| @@ -2733,16 +2751,31 @@ static inline void security_secmark_refcount_dec(void) | |||
| 2733 | { | 2751 | { |
| 2734 | } | 2752 | } |
| 2735 | 2753 | ||
| 2754 | static inline int security_tun_dev_alloc_security(void **security) | ||
| 2755 | { | ||
| 2756 | return 0; | ||
| 2757 | } | ||
| 2758 | |||
| 2759 | static inline void security_tun_dev_free_security(void *security) | ||
| 2760 | { | ||
| 2761 | } | ||
| 2762 | |||
| 2736 | static inline int security_tun_dev_create(void) | 2763 | static inline int security_tun_dev_create(void) |
| 2737 | { | 2764 | { |
| 2738 | return 0; | 2765 | return 0; |
| 2739 | } | 2766 | } |
| 2740 | 2767 | ||
| 2741 | static inline void security_tun_dev_post_create(struct sock *sk) | 2768 | static inline int security_tun_dev_attach_queue(void *security) |
| 2769 | { | ||
| 2770 | return 0; | ||
| 2771 | } | ||
| 2772 | |||
| 2773 | static inline int security_tun_dev_attach(struct sock *sk, void *security) | ||
| 2742 | { | 2774 | { |
| 2775 | return 0; | ||
| 2743 | } | 2776 | } |
| 2744 | 2777 | ||
| 2745 | static inline int security_tun_dev_attach(struct sock *sk) | 2778 | static inline int security_tun_dev_open(void *security) |
| 2746 | { | 2779 | { |
| 2747 | return 0; | 2780 | return 0; |
| 2748 | } | 2781 | } |
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index bd45eb7bedc8..5de7a220e986 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h | |||
| @@ -100,6 +100,7 @@ struct driver_info { | |||
| 100 | #define FLAG_LINK_INTR 0x0800 /* updates link (carrier) status */ | 100 | #define FLAG_LINK_INTR 0x0800 /* updates link (carrier) status */ |
| 101 | 101 | ||
| 102 | #define FLAG_POINTTOPOINT 0x1000 /* possibly use "usb%d" names */ | 102 | #define FLAG_POINTTOPOINT 0x1000 /* possibly use "usb%d" names */ |
| 103 | #define FLAG_NOARP 0x2000 /* device can't do ARP */ | ||
| 103 | 104 | ||
| 104 | /* | 105 | /* |
| 105 | * Indicates to usbnet, that USB driver accumulates multiple IP packets. | 106 | * Indicates to usbnet, that USB driver accumulates multiple IP packets. |
