From 5ddfb85aed082562255e687111cd24ad9e460a2d Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Tue, 25 Dec 2007 02:20:33 -0800 Subject: [PATCH] --- yaml --- r: 75207 b: refs/heads/master c: bcea1db16ba1c45ccebb3bfb8441642d1342c4d5 h: refs/heads/master i: 75205: 2c4e56b0411f1cd34aceb04f62c2f24452a739d8 75203: b49838ce13910f6180115f612768adcb270903d7 75199: fdf0e9646918425072557b64ac0e46e8272fb312 v: v3 --- [refs] | 2 +- trunk/arch/sparc64/kernel/pci.c | 16 ++++++++++++++++ trunk/include/asm-generic/tlb.h | 3 +++ trunk/include/asm-sparc64/pci.h | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2d440cdb4b14..0ca11f0eb2ce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 49eaaa1a6c950e7a92c4386c199b8ec950f840b9 +refs/heads/master: bcea1db16ba1c45ccebb3bfb8441642d1342c4d5 diff --git a/trunk/arch/sparc64/kernel/pci.c b/trunk/arch/sparc64/kernel/pci.c index 63b3ebc0c3c2..a61c38fe75ea 100644 --- a/trunk/arch/sparc64/kernel/pci.c +++ b/trunk/arch/sparc64/kernel/pci.c @@ -1275,4 +1275,20 @@ int pci_dma_supported(struct pci_dev *pdev, u64 device_mask) return (device_mask & dma_addr_mask) == dma_addr_mask; } +void pci_resource_to_user(const struct pci_dev *pdev, int bar, + const struct resource *rp, resource_size_t *start, + resource_size_t *end) +{ + struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller; + unsigned long offset; + + if (rp->flags & IORESOURCE_IO) + offset = pbm->io_space.start; + else + offset = pbm->mem_space.start; + + *start = rp->start - offset; + *end = rp->end - offset; +} + #endif /* !(CONFIG_PCI) */ diff --git a/trunk/include/asm-generic/tlb.h b/trunk/include/asm-generic/tlb.h index 75f2bfab614f..799307eea40f 100644 --- a/trunk/include/asm-generic/tlb.h +++ b/trunk/include/asm-generic/tlb.h @@ -86,6 +86,9 @@ tlb_flush_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) static inline void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) { +#ifdef CONFIG_QUICKLIST + tlb->need_flush += &__get_cpu_var(quicklist)[0].nr_pages != 0; +#endif tlb_flush_mmu(tlb, start, end); /* keep the page table cache within bounds */ diff --git a/trunk/include/asm-sparc64/pci.h b/trunk/include/asm-sparc64/pci.h index 1393e57d50fb..f59f2571295b 100644 --- a/trunk/include/asm-sparc64/pci.h +++ b/trunk/include/asm-sparc64/pci.h @@ -200,6 +200,10 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) struct device_node; extern struct device_node *pci_device_to_OF_node(struct pci_dev *pdev); +#define HAVE_ARCH_PCI_RESOURCE_TO_USER +extern void pci_resource_to_user(const struct pci_dev *dev, int bar, + const struct resource *rsrc, + resource_size_t *start, resource_size_t *end); #endif /* __KERNEL__ */ #endif /* __SPARC64_PCI_H */