Skip to content

Commit

Permalink
PCI: Use pci_generic_prep_mwi on sparc64
Browse files Browse the repository at this point in the history
The setting of the CACHE_LINE_SIZE register in sparc64's pci
initialisation code isn't quite adequate as the device may have
incompatible requirements.  The generic code tests for this, so switch
sparc64 over to using it.

Since sparc64 has different L1 cache line size and PCI cache line size,
it would need to override the generic code like i386 and ia64 do.  We
know what the cache line size is at compile time though, so introduce a
new optional constant PCI_CACHE_LINE_BYTES.

Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: David Miller <davem@davemloft.net>
Acked-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Matthew Wilcox authored and Greg Kroah-Hartman committed Dec 1, 2006
1 parent 3efe2d8 commit ebf5a24
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 14 deletions.
9 changes: 0 additions & 9 deletions arch/sparc64/kernel/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -646,13 +646,4 @@ int pci_domain_nr(struct pci_bus *pbus)
}
EXPORT_SYMBOL(pci_domain_nr);

int pcibios_prep_mwi(struct pci_dev *dev)
{
/* We set correct PCI_CACHE_LINE_SIZE register values for every
* device probed on this platform. So there is nothing to check
* and this always succeeds.
*/
return 0;
}

#endif /* !(CONFIG_PCI) */
8 changes: 7 additions & 1 deletion drivers/pci/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -876,8 +876,14 @@ pci_set_master(struct pci_dev *dev)
}

#ifndef HAVE_ARCH_PCI_MWI

#ifndef PCI_CACHE_LINE_BYTES
#define PCI_CACHE_LINE_BYTES L1_CACHE_BYTES
#endif

/* This can be overridden by arch code. */
u8 pci_cache_line_size = L1_CACHE_BYTES >> 2;
/* Don't forget this is measured in 32-bit words, not bytes */
u8 pci_cache_line_size = PCI_CACHE_LINE_BYTES / 4;

/**
* pci_generic_prep_mwi - helper function for pci_set_mwi
Expand Down
6 changes: 2 additions & 4 deletions include/asm-sparc64/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

#define PCI_IRQ_NONE 0xffffffff

#define PCI_CACHE_LINE_BYTES 64

static inline void pcibios_set_master(struct pci_dev *dev)
{
/* No special bus mastering setup handling */
Expand Down Expand Up @@ -291,10 +293,6 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
enum pci_mmap_state mmap_state,
int write_combine);

/* Platform specific MWI support. */
#define HAVE_ARCH_PCI_MWI
extern int pcibios_prep_mwi(struct pci_dev *dev);

extern void
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
struct resource *res);
Expand Down

0 comments on commit ebf5a24

Please sign in to comment.