diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/hid.h | 5 | ||||
-rw-r--r-- | include/linux/hiddev.h | 4 | ||||
-rw-r--r-- | include/linux/i2c.h | 12 | ||||
-rw-r--r-- | include/linux/kvm.h | 12 | ||||
-rw-r--r-- | include/linux/kvm_host.h | 22 | ||||
-rw-r--r-- | include/linux/kvm_para.h | 7 | ||||
-rw-r--r-- | include/linux/padata.h | 4 |
7 files changed, 46 insertions, 20 deletions
diff --git a/include/linux/hid.h b/include/linux/hid.h index 42a0f1d11365..bb0f56f5c01e 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
@@ -316,6 +316,7 @@ struct hid_item { | |||
316 | #define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 | 316 | #define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 |
317 | #define HID_QUIRK_NO_INIT_REPORTS 0x20000000 | 317 | #define HID_QUIRK_NO_INIT_REPORTS 0x20000000 |
318 | #define HID_QUIRK_NO_IGNORE 0x40000000 | 318 | #define HID_QUIRK_NO_IGNORE 0x40000000 |
319 | #define HID_QUIRK_NO_INPUT_SYNC 0x80000000 | ||
319 | 320 | ||
320 | /* | 321 | /* |
321 | * This is the global environment of the parser. This information is | 322 | * This is the global environment of the parser. This information is |
@@ -626,8 +627,8 @@ struct hid_driver { | |||
626 | int (*event)(struct hid_device *hdev, struct hid_field *field, | 627 | int (*event)(struct hid_device *hdev, struct hid_field *field, |
627 | struct hid_usage *usage, __s32 value); | 628 | struct hid_usage *usage, __s32 value); |
628 | 629 | ||
629 | void (*report_fixup)(struct hid_device *hdev, __u8 *buf, | 630 | __u8 *(*report_fixup)(struct hid_device *hdev, __u8 *buf, |
630 | unsigned int size); | 631 | unsigned int *size); |
631 | 632 | ||
632 | int (*input_mapping)(struct hid_device *hdev, | 633 | int (*input_mapping)(struct hid_device *hdev, |
633 | struct hid_input *hidinput, struct hid_field *field, | 634 | struct hid_input *hidinput, struct hid_field *field, |
diff --git a/include/linux/hiddev.h b/include/linux/hiddev.h index bb6f58baf319..a3f481a3063b 100644 --- a/include/linux/hiddev.h +++ b/include/linux/hiddev.h | |||
@@ -226,8 +226,6 @@ void hiddev_disconnect(struct hid_device *); | |||
226 | void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, | 226 | void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, |
227 | struct hid_usage *usage, __s32 value); | 227 | struct hid_usage *usage, __s32 value); |
228 | void hiddev_report_event(struct hid_device *hid, struct hid_report *report); | 228 | void hiddev_report_event(struct hid_device *hid, struct hid_report *report); |
229 | int __init hiddev_init(void); | ||
230 | void hiddev_exit(void); | ||
231 | #else | 229 | #else |
232 | static inline int hiddev_connect(struct hid_device *hid, | 230 | static inline int hiddev_connect(struct hid_device *hid, |
233 | unsigned int force) | 231 | unsigned int force) |
@@ -236,8 +234,6 @@ static inline void hiddev_disconnect(struct hid_device *hid) { } | |||
236 | static inline void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, | 234 | static inline void hiddev_hid_event(struct hid_device *hid, struct hid_field *field, |
237 | struct hid_usage *usage, __s32 value) { } | 235 | struct hid_usage *usage, __s32 value) { } |
238 | static inline void hiddev_report_event(struct hid_device *hid, struct hid_report *report) { } | 236 | static inline void hiddev_report_event(struct hid_device *hid, struct hid_report *report) { } |
239 | static inline int hiddev_init(void) { return 0; } | ||
240 | static inline void hiddev_exit(void) { } | ||
241 | #endif | 237 | #endif |
242 | 238 | ||
243 | #endif | 239 | #endif |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 4bae0b72ed3c..1f66fa06a97c 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -384,11 +384,15 @@ static inline void i2c_set_adapdata(struct i2c_adapter *dev, void *data) | |||
384 | dev_set_drvdata(&dev->dev, data); | 384 | dev_set_drvdata(&dev->dev, data); |
385 | } | 385 | } |
386 | 386 | ||
387 | static inline int i2c_parent_is_i2c_adapter(const struct i2c_adapter *adapter) | 387 | static inline struct i2c_adapter * |
388 | i2c_parent_is_i2c_adapter(const struct i2c_adapter *adapter) | ||
388 | { | 389 | { |
389 | return adapter->dev.parent != NULL | 390 | struct device *parent = adapter->dev.parent; |
390 | && adapter->dev.parent->bus == &i2c_bus_type | 391 | |
391 | && adapter->dev.parent->type == &i2c_adapter_type; | 392 | if (parent != NULL && parent->type == &i2c_adapter_type) |
393 | return to_i2c_adapter(parent); | ||
394 | else | ||
395 | return NULL; | ||
392 | } | 396 | } |
393 | 397 | ||
394 | /* Adapter locking functions, exported for shared pin cases */ | 398 | /* Adapter locking functions, exported for shared pin cases */ |
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 636fc381c897..919ae53adc5c 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
@@ -414,6 +414,14 @@ struct kvm_enable_cap { | |||
414 | __u8 pad[64]; | 414 | __u8 pad[64]; |
415 | }; | 415 | }; |
416 | 416 | ||
417 | /* for KVM_PPC_GET_PVINFO */ | ||
418 | struct kvm_ppc_pvinfo { | ||
419 | /* out */ | ||
420 | __u32 flags; | ||
421 | __u32 hcall[4]; | ||
422 | __u8 pad[108]; | ||
423 | }; | ||
424 | |||
417 | #define KVMIO 0xAE | 425 | #define KVMIO 0xAE |
418 | 426 | ||
419 | /* | 427 | /* |
@@ -530,6 +538,8 @@ struct kvm_enable_cap { | |||
530 | #ifdef __KVM_HAVE_XCRS | 538 | #ifdef __KVM_HAVE_XCRS |
531 | #define KVM_CAP_XCRS 56 | 539 | #define KVM_CAP_XCRS 56 |
532 | #endif | 540 | #endif |
541 | #define KVM_CAP_PPC_GET_PVINFO 57 | ||
542 | #define KVM_CAP_PPC_IRQ_LEVEL 58 | ||
533 | 543 | ||
534 | #ifdef KVM_CAP_IRQ_ROUTING | 544 | #ifdef KVM_CAP_IRQ_ROUTING |
535 | 545 | ||
@@ -664,6 +674,8 @@ struct kvm_clock_data { | |||
664 | /* Available with KVM_CAP_PIT_STATE2 */ | 674 | /* Available with KVM_CAP_PIT_STATE2 */ |
665 | #define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2) | 675 | #define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2) |
666 | #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) | 676 | #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) |
677 | /* Available with KVM_CAP_PPC_GET_PVINFO */ | ||
678 | #define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo) | ||
667 | 679 | ||
668 | /* | 680 | /* |
669 | * ioctls for vcpu fds | 681 | * ioctls for vcpu fds |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index ac740b26eb10..a0557422715e 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
@@ -36,9 +36,10 @@ | |||
36 | #define KVM_REQ_PENDING_TIMER 5 | 36 | #define KVM_REQ_PENDING_TIMER 5 |
37 | #define KVM_REQ_UNHALT 6 | 37 | #define KVM_REQ_UNHALT 6 |
38 | #define KVM_REQ_MMU_SYNC 7 | 38 | #define KVM_REQ_MMU_SYNC 7 |
39 | #define KVM_REQ_KVMCLOCK_UPDATE 8 | 39 | #define KVM_REQ_CLOCK_UPDATE 8 |
40 | #define KVM_REQ_KICK 9 | 40 | #define KVM_REQ_KICK 9 |
41 | #define KVM_REQ_DEACTIVATE_FPU 10 | 41 | #define KVM_REQ_DEACTIVATE_FPU 10 |
42 | #define KVM_REQ_EVENT 11 | ||
42 | 43 | ||
43 | #define KVM_USERSPACE_IRQ_SOURCE_ID 0 | 44 | #define KVM_USERSPACE_IRQ_SOURCE_ID 0 |
44 | 45 | ||
@@ -289,6 +290,9 @@ void kvm_arch_commit_memory_region(struct kvm *kvm, | |||
289 | void kvm_disable_largepages(void); | 290 | void kvm_disable_largepages(void); |
290 | void kvm_arch_flush_shadow(struct kvm *kvm); | 291 | void kvm_arch_flush_shadow(struct kvm *kvm); |
291 | 292 | ||
293 | int gfn_to_page_many_atomic(struct kvm *kvm, gfn_t gfn, struct page **pages, | ||
294 | int nr_pages); | ||
295 | |||
292 | struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn); | 296 | struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn); |
293 | unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn); | 297 | unsigned long gfn_to_hva(struct kvm *kvm, gfn_t gfn); |
294 | void kvm_release_page_clean(struct page *page); | 298 | void kvm_release_page_clean(struct page *page); |
@@ -296,6 +300,8 @@ void kvm_release_page_dirty(struct page *page); | |||
296 | void kvm_set_page_dirty(struct page *page); | 300 | void kvm_set_page_dirty(struct page *page); |
297 | void kvm_set_page_accessed(struct page *page); | 301 | void kvm_set_page_accessed(struct page *page); |
298 | 302 | ||
303 | pfn_t hva_to_pfn_atomic(struct kvm *kvm, unsigned long addr); | ||
304 | pfn_t gfn_to_pfn_atomic(struct kvm *kvm, gfn_t gfn); | ||
299 | pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn); | 305 | pfn_t gfn_to_pfn(struct kvm *kvm, gfn_t gfn); |
300 | pfn_t gfn_to_pfn_memslot(struct kvm *kvm, | 306 | pfn_t gfn_to_pfn_memslot(struct kvm *kvm, |
301 | struct kvm_memory_slot *slot, gfn_t gfn); | 307 | struct kvm_memory_slot *slot, gfn_t gfn); |
@@ -477,8 +483,7 @@ int kvm_deassign_device(struct kvm *kvm, | |||
477 | struct kvm_assigned_dev_kernel *assigned_dev); | 483 | struct kvm_assigned_dev_kernel *assigned_dev); |
478 | #else /* CONFIG_IOMMU_API */ | 484 | #else /* CONFIG_IOMMU_API */ |
479 | static inline int kvm_iommu_map_pages(struct kvm *kvm, | 485 | static inline int kvm_iommu_map_pages(struct kvm *kvm, |
480 | gfn_t base_gfn, | 486 | struct kvm_memory_slot *slot) |
481 | unsigned long npages) | ||
482 | { | 487 | { |
483 | return 0; | 488 | return 0; |
484 | } | 489 | } |
@@ -518,11 +523,22 @@ static inline void kvm_guest_exit(void) | |||
518 | current->flags &= ~PF_VCPU; | 523 | current->flags &= ~PF_VCPU; |
519 | } | 524 | } |
520 | 525 | ||
526 | static inline unsigned long gfn_to_hva_memslot(struct kvm_memory_slot *slot, | ||
527 | gfn_t gfn) | ||
528 | { | ||
529 | return slot->userspace_addr + (gfn - slot->base_gfn) * PAGE_SIZE; | ||
530 | } | ||
531 | |||
521 | static inline gpa_t gfn_to_gpa(gfn_t gfn) | 532 | static inline gpa_t gfn_to_gpa(gfn_t gfn) |
522 | { | 533 | { |
523 | return (gpa_t)gfn << PAGE_SHIFT; | 534 | return (gpa_t)gfn << PAGE_SHIFT; |
524 | } | 535 | } |
525 | 536 | ||
537 | static inline gfn_t gpa_to_gfn(gpa_t gpa) | ||
538 | { | ||
539 | return (gfn_t)(gpa >> PAGE_SHIFT); | ||
540 | } | ||
541 | |||
526 | static inline hpa_t pfn_to_hpa(pfn_t pfn) | 542 | static inline hpa_t pfn_to_hpa(pfn_t pfn) |
527 | { | 543 | { |
528 | return (hpa_t)pfn << PAGE_SHIFT; | 544 | return (hpa_t)pfn << PAGE_SHIFT; |
diff --git a/include/linux/kvm_para.h b/include/linux/kvm_para.h index d73109243fda..47a070b0520e 100644 --- a/include/linux/kvm_para.h +++ b/include/linux/kvm_para.h | |||
@@ -17,6 +17,8 @@ | |||
17 | 17 | ||
18 | #define KVM_HC_VAPIC_POLL_IRQ 1 | 18 | #define KVM_HC_VAPIC_POLL_IRQ 1 |
19 | #define KVM_HC_MMU_OP 2 | 19 | #define KVM_HC_MMU_OP 2 |
20 | #define KVM_HC_FEATURES 3 | ||
21 | #define KVM_HC_PPC_MAP_MAGIC_PAGE 4 | ||
20 | 22 | ||
21 | /* | 23 | /* |
22 | * hypercalls use architecture specific | 24 | * hypercalls use architecture specific |
@@ -24,11 +26,6 @@ | |||
24 | #include <asm/kvm_para.h> | 26 | #include <asm/kvm_para.h> |
25 | 27 | ||
26 | #ifdef __KERNEL__ | 28 | #ifdef __KERNEL__ |
27 | #ifdef CONFIG_KVM_GUEST | ||
28 | void __init kvm_guest_init(void); | ||
29 | #else | ||
30 | #define kvm_guest_init() do { } while (0) | ||
31 | #endif | ||
32 | 29 | ||
33 | static inline int kvm_para_has_feature(unsigned int feature) | 30 | static inline int kvm_para_has_feature(unsigned int feature) |
34 | { | 31 | { |
diff --git a/include/linux/padata.h b/include/linux/padata.h index bdcd1e9eacea..4633b2f726b6 100644 --- a/include/linux/padata.h +++ b/include/linux/padata.h | |||
@@ -127,8 +127,8 @@ struct padata_cpumask { | |||
127 | */ | 127 | */ |
128 | struct parallel_data { | 128 | struct parallel_data { |
129 | struct padata_instance *pinst; | 129 | struct padata_instance *pinst; |
130 | struct padata_parallel_queue *pqueue; | 130 | struct padata_parallel_queue __percpu *pqueue; |
131 | struct padata_serial_queue *squeue; | 131 | struct padata_serial_queue __percpu *squeue; |
132 | atomic_t seq_nr; | 132 | atomic_t seq_nr; |
133 | atomic_t reorder_objects; | 133 | atomic_t reorder_objects; |
134 | atomic_t refcnt; | 134 | atomic_t refcnt; |