diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 17:20:19 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 17:20:19 -0500 |
| commit | c7708fac5a878d6e0f2de0aa19f9749cff4f707f (patch) | |
| tree | 21a59cbe503ca526697f7d0bce5e0e30980bcbc0 /include | |
| parent | 3127f23f013eabe9b58132c05061684c49146ba3 (diff) | |
| parent | 6726a807c38d7fd09bc23a0adc738efec6ff9492 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 update from Martin Schwidefsky:
"Add support to generate code for the latest machine zEC12, MOD and XOR
instruction support for the BPF jit compiler, the dasd safe offline
feature and the big one: the s390 architecture gets PCI support!!
Right before the world ends on the 21st ;-)"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (41 commits)
s390/qdio: rename the misleading PCI flag of qdio devices
s390/pci: remove obsolete email addresses
s390/pci: speed up __iowrite64_copy by using pci store block insn
s390/pci: enable NEED_DMA_MAP_STATE
s390/pci: no msleep in potential IRQ context
s390/pci: fix potential NULL pointer dereference in dma_free_seg_table()
s390/pci: use kmem_cache_zalloc instead of kmem_cache_alloc/memset
s390/bpf,jit: add support for XOR instruction
s390/bpf,jit: add support MOD instruction
s390/cio: fix pgid reserved check
vga: compile fix, disable vga for s390
s390/pci: add PCI Kconfig options
s390/pci: s390 specific PCI sysfs attributes
s390/pci: PCI hotplug support via SCLP
s390/pci: CHSC PCI support for error and availability events
s390/pci: DMA support
s390/pci: PCI adapter interrupts for MSI/MSI-X
s390/bitops: find leftmost bit instruction support
s390/pci: CLP interface
s390/pci: base support
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/io.h | 21 | ||||
| -rw-r--r-- | include/linux/irq.h | 10 |
2 files changed, 25 insertions, 6 deletions
diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index 448303bdb85f..9e0ebe051243 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h | |||
| @@ -83,19 +83,25 @@ static inline void __raw_writel(u32 b, volatile void __iomem *addr) | |||
| 83 | #define writel(b,addr) __raw_writel(__cpu_to_le32(b),addr) | 83 | #define writel(b,addr) __raw_writel(__cpu_to_le32(b),addr) |
| 84 | 84 | ||
| 85 | #ifdef CONFIG_64BIT | 85 | #ifdef CONFIG_64BIT |
| 86 | #ifndef __raw_readq | ||
| 86 | static inline u64 __raw_readq(const volatile void __iomem *addr) | 87 | static inline u64 __raw_readq(const volatile void __iomem *addr) |
| 87 | { | 88 | { |
| 88 | return *(const volatile u64 __force *) addr; | 89 | return *(const volatile u64 __force *) addr; |
| 89 | } | 90 | } |
| 91 | #endif | ||
| 92 | |||
| 90 | #define readq(addr) __le64_to_cpu(__raw_readq(addr)) | 93 | #define readq(addr) __le64_to_cpu(__raw_readq(addr)) |
| 91 | 94 | ||
| 95 | #ifndef __raw_writeq | ||
| 92 | static inline void __raw_writeq(u64 b, volatile void __iomem *addr) | 96 | static inline void __raw_writeq(u64 b, volatile void __iomem *addr) |
| 93 | { | 97 | { |
| 94 | *(volatile u64 __force *) addr = b; | 98 | *(volatile u64 __force *) addr = b; |
| 95 | } | 99 | } |
| 96 | #define writeq(b,addr) __raw_writeq(__cpu_to_le64(b),addr) | ||
| 97 | #endif | 100 | #endif |
| 98 | 101 | ||
| 102 | #define writeq(b, addr) __raw_writeq(__cpu_to_le64(b), addr) | ||
| 103 | #endif /* CONFIG_64BIT */ | ||
| 104 | |||
| 99 | #ifndef PCI_IOBASE | 105 | #ifndef PCI_IOBASE |
| 100 | #define PCI_IOBASE ((void __iomem *) 0) | 106 | #define PCI_IOBASE ((void __iomem *) 0) |
| 101 | #endif | 107 | #endif |
| @@ -286,15 +292,20 @@ static inline void writesb(const void __iomem *addr, const void *buf, int len) | |||
| 286 | 292 | ||
| 287 | #ifndef CONFIG_GENERIC_IOMAP | 293 | #ifndef CONFIG_GENERIC_IOMAP |
| 288 | struct pci_dev; | 294 | struct pci_dev; |
| 295 | extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); | ||
| 296 | |||
| 297 | #ifndef pci_iounmap | ||
| 289 | static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p) | 298 | static inline void pci_iounmap(struct pci_dev *dev, void __iomem *p) |
| 290 | { | 299 | { |
| 291 | } | 300 | } |
| 301 | #endif | ||
| 292 | #endif /* CONFIG_GENERIC_IOMAP */ | 302 | #endif /* CONFIG_GENERIC_IOMAP */ |
| 293 | 303 | ||
| 294 | /* | 304 | /* |
| 295 | * Change virtual addresses to physical addresses and vv. | 305 | * Change virtual addresses to physical addresses and vv. |
| 296 | * These are pretty trivial | 306 | * These are pretty trivial |
| 297 | */ | 307 | */ |
| 308 | #ifndef virt_to_phys | ||
| 298 | static inline unsigned long virt_to_phys(volatile void *address) | 309 | static inline unsigned long virt_to_phys(volatile void *address) |
| 299 | { | 310 | { |
| 300 | return __pa((unsigned long)address); | 311 | return __pa((unsigned long)address); |
| @@ -304,6 +315,7 @@ static inline void *phys_to_virt(unsigned long address) | |||
| 304 | { | 315 | { |
| 305 | return __va(address); | 316 | return __va(address); |
| 306 | } | 317 | } |
| 318 | #endif | ||
| 307 | 319 | ||
| 308 | /* | 320 | /* |
| 309 | * Change "struct page" to physical address. | 321 | * Change "struct page" to physical address. |
| @@ -363,9 +375,16 @@ static inline void *bus_to_virt(unsigned long address) | |||
| 363 | } | 375 | } |
| 364 | #endif | 376 | #endif |
| 365 | 377 | ||
| 378 | #ifndef memset_io | ||
| 366 | #define memset_io(a, b, c) memset(__io_virt(a), (b), (c)) | 379 | #define memset_io(a, b, c) memset(__io_virt(a), (b), (c)) |
| 380 | #endif | ||
| 381 | |||
| 382 | #ifndef memcpy_fromio | ||
| 367 | #define memcpy_fromio(a, b, c) memcpy((a), __io_virt(b), (c)) | 383 | #define memcpy_fromio(a, b, c) memcpy((a), __io_virt(b), (c)) |
| 384 | #endif | ||
| 385 | #ifndef memcpy_toio | ||
| 368 | #define memcpy_toio(a, b, c) memcpy(__io_virt(a), (b), (c)) | 386 | #define memcpy_toio(a, b, c) memcpy(__io_virt(a), (b), (c)) |
| 387 | #endif | ||
| 369 | 388 | ||
| 370 | #endif /* __KERNEL__ */ | 389 | #endif /* __KERNEL__ */ |
| 371 | 390 | ||
diff --git a/include/linux/irq.h b/include/linux/irq.h index 526f10a637c1..fdf2c4a238cc 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -10,9 +10,6 @@ | |||
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
| 13 | |||
| 14 | #ifndef CONFIG_S390 | ||
| 15 | |||
| 16 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
| 17 | #include <linux/cache.h> | 14 | #include <linux/cache.h> |
| 18 | #include <linux/spinlock.h> | 15 | #include <linux/spinlock.h> |
| @@ -746,8 +743,11 @@ static inline void irq_gc_lock(struct irq_chip_generic *gc) { } | |||
| 746 | static inline void irq_gc_unlock(struct irq_chip_generic *gc) { } | 743 | static inline void irq_gc_unlock(struct irq_chip_generic *gc) { } |
| 747 | #endif | 744 | #endif |
| 748 | 745 | ||
| 749 | #endif /* CONFIG_GENERIC_HARDIRQS */ | 746 | #else /* !CONFIG_GENERIC_HARDIRQS */ |
| 750 | 747 | ||
| 751 | #endif /* !CONFIG_S390 */ | 748 | extern struct msi_desc *irq_get_msi_desc(unsigned int irq); |
| 749 | extern int irq_set_msi_desc(unsigned int irq, struct msi_desc *entry); | ||
| 750 | |||
| 751 | #endif /* CONFIG_GENERIC_HARDIRQS */ | ||
| 752 | 752 | ||
| 753 | #endif /* _LINUX_IRQ_H */ | 753 | #endif /* _LINUX_IRQ_H */ |
