Commit a971526e authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'parisc-4.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull parisc fixes from Helge Deller:
 "Fix the boot crash on Mako machines with Huge Pages, prevent a panic
  with SATA controllers (and others) by correctly calculating the IOMMU
  space, hook up the mlock2 syscall and drop unneeded code in the parisc
  pci code"

* 'parisc-4.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: Disable huge pages on Mako machines
  parisc: Wire up mlock2 syscall
  parisc: Remove unused pcibios_init_bus()
  parisc iommu: fix panic due to trying to allocate too large region
parents 78075631 78c0cbff
...@@ -372,7 +372,8 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } ...@@ -372,7 +372,8 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
*/ */
#ifdef CONFIG_HUGETLB_PAGE #ifdef CONFIG_HUGETLB_PAGE
#define pte_huge(pte) (pte_val(pte) & _PAGE_HUGE) #define pte_huge(pte) (pte_val(pte) & _PAGE_HUGE)
#define pte_mkhuge(pte) (__pte(pte_val(pte) | _PAGE_HUGE)) #define pte_mkhuge(pte) (__pte(pte_val(pte) | \
(parisc_requires_coherency() ? 0 : _PAGE_HUGE)))
#else #else
#define pte_huge(pte) (0) #define pte_huge(pte) (0)
#define pte_mkhuge(pte) (pte) #define pte_mkhuge(pte) (pte)
......
...@@ -360,8 +360,9 @@ ...@@ -360,8 +360,9 @@
#define __NR_execveat (__NR_Linux + 342) #define __NR_execveat (__NR_Linux + 342)
#define __NR_membarrier (__NR_Linux + 343) #define __NR_membarrier (__NR_Linux + 343)
#define __NR_userfaultfd (__NR_Linux + 344) #define __NR_userfaultfd (__NR_Linux + 344)
#define __NR_mlock2 (__NR_Linux + 345)
#define __NR_Linux_syscalls (__NR_userfaultfd + 1) #define __NR_Linux_syscalls (__NR_mlock2 + 1)
#define __IGNORE_select /* newselect */ #define __IGNORE_select /* newselect */
......
...@@ -171,24 +171,6 @@ void pcibios_set_master(struct pci_dev *dev) ...@@ -171,24 +171,6 @@ void pcibios_set_master(struct pci_dev *dev)
} }
void __init pcibios_init_bus(struct pci_bus *bus)
{
struct pci_dev *dev = bus->self;
unsigned short bridge_ctl;
/* We deal only with pci controllers and pci-pci bridges. */
if (!dev || (dev->class >> 8) != PCI_CLASS_BRIDGE_PCI)
return;
/* PCI-PCI bridge - set the cache line and default latency
(32) for primary and secondary buses. */
pci_write_config_byte(dev, PCI_SEC_LATENCY_TIMER, 32);
pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bridge_ctl);
bridge_ctl |= PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR;
pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl);
}
/* /*
* pcibios align resources() is called every time generic PCI code * pcibios align resources() is called every time generic PCI code
* wants to generate a new address. The process of looking for * wants to generate a new address. The process of looking for
......
...@@ -440,6 +440,7 @@ ...@@ -440,6 +440,7 @@
ENTRY_COMP(execveat) ENTRY_COMP(execveat)
ENTRY_SAME(membarrier) ENTRY_SAME(membarrier)
ENTRY_SAME(userfaultfd) ENTRY_SAME(userfaultfd)
ENTRY_SAME(mlock2) /* 345 */
.ifne (. - 90b) - (__NR_Linux_syscalls * (91b - 90b)) .ifne (. - 90b) - (__NR_Linux_syscalls * (91b - 90b))
......
...@@ -104,7 +104,11 @@ iommu_coalesce_chunks(struct ioc *ioc, struct device *dev, ...@@ -104,7 +104,11 @@ iommu_coalesce_chunks(struct ioc *ioc, struct device *dev,
struct scatterlist *contig_sg; /* contig chunk head */ struct scatterlist *contig_sg; /* contig chunk head */
unsigned long dma_offset, dma_len; /* start/len of DMA stream */ unsigned long dma_offset, dma_len; /* start/len of DMA stream */
unsigned int n_mappings = 0; unsigned int n_mappings = 0;
unsigned int max_seg_size = dma_get_max_seg_size(dev); unsigned int max_seg_size = min(dma_get_max_seg_size(dev),
(unsigned)DMA_CHUNK_SIZE);
unsigned int max_seg_boundary = dma_get_seg_boundary(dev) + 1;
if (max_seg_boundary) /* check if the addition above didn't overflow */
max_seg_size = min(max_seg_size, max_seg_boundary);
while (nents > 0) { while (nents > 0) {
...@@ -138,14 +142,11 @@ iommu_coalesce_chunks(struct ioc *ioc, struct device *dev, ...@@ -138,14 +142,11 @@ iommu_coalesce_chunks(struct ioc *ioc, struct device *dev,
/* /*
** First make sure current dma stream won't ** First make sure current dma stream won't
** exceed DMA_CHUNK_SIZE if we coalesce the ** exceed max_seg_size if we coalesce the
** next entry. ** next entry.
*/ */
if(unlikely(ALIGN(dma_len + dma_offset + startsg->length, if (unlikely(ALIGN(dma_len + dma_offset + startsg->length, IOVP_SIZE) >
IOVP_SIZE) > DMA_CHUNK_SIZE)) max_seg_size))
break;
if (startsg->length + dma_len > max_seg_size)
break; break;
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment