mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 17:41:22 +00:00
[IA64] Make SN2 PCI code use ioremap rather than manually mangle the address
This one changes the SN2 specific PCI drivers to use ioremap() for obtaining the real address to access for the PCI registers instead of manually calculating them with __IA64_UNCACHED_OFFSET. The patch should have no real change when running on a normal Linux kernel, but when running as a paravirtualized it is needed. Signed-off-by: Jes Sorenson <jes@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
c034637967
commit
1ee27a4eed
@ -15,6 +15,7 @@
|
||||
#include <asm/sn/pcibus_provider_defs.h>
|
||||
#include <asm/sn/pcidev.h>
|
||||
#include <asm/sn/sn_sal.h>
|
||||
#include <asm/sn/pic.h>
|
||||
#include <asm/sn/sn2/sn_hwperf.h>
|
||||
#include "xtalk/xwidgetdev.h"
|
||||
#include "xtalk/hubdev.h"
|
||||
@ -130,9 +131,9 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
|
||||
}
|
||||
|
||||
memcpy(soft, prom_bussoft, sizeof(struct pcibus_info));
|
||||
soft->pbi_buscommon.bs_base =
|
||||
(((u64) soft->pbi_buscommon.
|
||||
bs_base << 4) >> 4) | __IA64_UNCACHED_OFFSET;
|
||||
soft->pbi_buscommon.bs_base = (unsigned long)
|
||||
ioremap(REGION_OFFSET(soft->pbi_buscommon.bs_base),
|
||||
sizeof(struct pic));
|
||||
|
||||
spin_lock_init(&soft->pbi_lock);
|
||||
|
||||
|
@ -610,7 +610,9 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
|
||||
return NULL;
|
||||
|
||||
memcpy(tioca_common, prom_bussoft, sizeof(struct tioca_common));
|
||||
tioca_common->ca_common.bs_base |= __IA64_UNCACHED_OFFSET;
|
||||
tioca_common->ca_common.bs_base = (unsigned long)
|
||||
ioremap(REGION_OFFSET(tioca_common->ca_common.bs_base),
|
||||
sizeof(struct tioca_common));
|
||||
|
||||
/* init kernel-private area */
|
||||
|
||||
|
@ -1002,7 +1002,9 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
|
||||
return NULL;
|
||||
|
||||
memcpy(tioce_common, prom_bussoft, sizeof(struct tioce_common));
|
||||
tioce_common->ce_pcibus.bs_base |= __IA64_UNCACHED_OFFSET;
|
||||
tioce_common->ce_pcibus.bs_base = (unsigned long)
|
||||
ioremap(REGION_OFFSET(tioce_common->ce_pcibus.bs_base),
|
||||
sizeof(struct tioce_common));
|
||||
|
||||
tioce_kern = tioce_kern_init(tioce_common);
|
||||
if (tioce_kern == NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user