* [GIT PULL] parisc fixes for 3.3-rc5
@ 2012-05-19 18:51 James Bottomley
0 siblings, 0 replies; 4+ messages in thread
From: James Bottomley @ 2012-05-19 18:51 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: Parisc List, linux-kernel
This is a set of three bug fixes that gets parisc running again on
systems with PA1.1 processors. Two fix regressions introduced in 2.6.39
and one fixes a prefetch bug that only affects PA7300LC processors. We
also have another pending fix to do with the sectional arrangement of
vmlinux.lds, but there's a query on it during testing on one particular
system type, so I'll hold off sending it in for now.
The patches are here:
git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6.git parisc-fixes
The short changelog is:
James Bottomley (2):
[PARISC] fix panic on prefetch(NULL) on PA7300LC
[PARISC] fix PA1.1 oops on boot
John David Anglin (1):
[PARISC] fix crash in flush_icache_page_asm on PA1.1
And the diffstat:
arch/parisc/include/asm/prefetch.h | 7 ++++++-
arch/parisc/kernel/entry.S | 4 ++++
arch/parisc/kernel/pacache.S | 38 +++++++++++++++++++-----------------
3 files changed, 30 insertions(+), 19 deletions(-)
With the full diff below
James
---
diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h
index c5edc60..1ee7c82 100644
--- a/arch/parisc/include/asm/prefetch.h
+++ b/arch/parisc/include/asm/prefetch.h
@@ -21,7 +21,12 @@
#define ARCH_HAS_PREFETCH
static inline void prefetch(const void *addr)
{
- __asm__("ldw 0(%0), %%r0" : : "r" (addr));
+ __asm__(
+#ifndef CONFIG_PA20
+ /* Need to avoid prefetch of NULL on PA7300LC */
+ " extrw,u,= %0,31,32,%%r0\n"
+#endif
+ " ldw 0(%0), %%r0" : : "r" (addr));
}
/* LDD is a PA2.0 addition. */
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index 6f05944..5350342 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -581,7 +581,11 @@
*/
cmpiclr,= 0x01,\tmp,%r0
ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot
+#ifdef CONFIG_64BIT
depd,z \prot,8,7,\prot
+#else
+ depw,z \prot,8,7,\prot
+#endif
/*
* OK, it is in the temp alias region, check whether "from" or "to".
* Check "subtle" note in pacache.S re: r23/r26.
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index 93ff3d9..5d7218a 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -692,7 +692,7 @@ ENTRY(flush_icache_page_asm)
/* Purge any old translation */
- pitlb (%sr0,%r28)
+ pitlb (%sr4,%r28)
ldil L%icache_stride, %r1
ldw R%icache_stride(%r1), %r1
@@ -706,27 +706,29 @@ ENTRY(flush_icache_page_asm)
sub %r25, %r1, %r25
-1: fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
- fic,m %r1(%r28)
+ /* fic only has the type 26 form on PA1.1, requiring an
+ * explicit space specification, so use %sr4 */
+1: fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
+ fic,m %r1(%sr4,%r28)
cmpb,COND(<<) %r28, %r25,1b
- fic,m %r1(%r28)
+ fic,m %r1(%sr4,%r28)
sync
bv %r0(%r2)
- pitlb (%sr0,%r25)
+ pitlb (%sr4,%r25)
.exit
.procend
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [GIT PULL] parisc fixes for 3.3-rc5
2012-03-04 0:17 ` Linus Torvalds
@ 2012-03-04 0:31 ` James Bottomley
0 siblings, 0 replies; 4+ messages in thread
From: James Bottomley @ 2012-03-04 0:31 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Andrew Morton, Parisc List, linux-kernel
On Sat, 2012-03-03 at 16:17 -0800, Linus Torvalds wrote:
> On Sat, Mar 3, 2012 at 3:44 PM, James Bottomley
> <James.Bottomley@hansenpartnership.com> wrote:
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git parisc-fixes
>
> "fatal: Couldn't find remote ref parisc-fixes"
>
> Forgot to push?
Erm, no, forgot to give the URL of the right tree. Sorry about that,
try this instead:
git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6.git parisc-fixes
James
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [GIT PULL] parisc fixes for 3.3-rc5
2012-03-03 23:44 James Bottomley
@ 2012-03-04 0:17 ` Linus Torvalds
2012-03-04 0:31 ` James Bottomley
0 siblings, 1 reply; 4+ messages in thread
From: Linus Torvalds @ 2012-03-04 0:17 UTC (permalink / raw)
To: James Bottomley; +Cc: Andrew Morton, Parisc List, linux-kernel
On Sat, Mar 3, 2012 at 3:44 PM, James Bottomley
<James.Bottomley@hansenpartnership.com> wrote:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git parisc-fixes
"fatal: Couldn't find remote ref parisc-fixes"
Forgot to push?
Linus
^ permalink raw reply [flat|nested] 4+ messages in thread
* [GIT PULL] parisc fixes for 3.3-rc5
@ 2012-03-03 23:44 James Bottomley
2012-03-04 0:17 ` Linus Torvalds
0 siblings, 1 reply; 4+ messages in thread
From: James Bottomley @ 2012-03-03 23:44 UTC (permalink / raw)
To: Andrew Morton, Linus Torvalds; +Cc: Parisc List, linux-kernel
This is a set of build fixes to get the cross compiled architecture
testbeds building again
The patches are here:
git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git parisc-fixes
The short changelog is:
Cong Wang (1):
[PARISC] include <linux/prefetch.h> in drivers/parisc/iommu-helpers.h
James Bottomley (2):
[PARISC] don't unconditionally override CROSS_COMPILE for 64 bit.
[PARISC] fix compile break caused by iomap: make IOPORT/PCI mapping functions conditional
And the diffstat
arch/parisc/Makefile | 4 ++++
drivers/parisc/iommu-helpers.h | 2 ++
include/asm-generic/iomap.h | 2 +-
include/asm-generic/pci_iomap.h | 2 +-
4 files changed, 8 insertions(+), 2 deletions(-)
With the full diffs below.
James
---
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index 55cca1d..19ab7b2 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -31,7 +31,11 @@ ifdef CONFIG_64BIT
UTS_MACHINE := parisc64
CHECKFLAGS += -D__LP64__=1 -m64
WIDTH := 64
+
+# FIXME: if no default set, should really try to locate dynamically
+ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := hppa64-linux-gnu-
+endif
else # 32-bit
WIDTH :=
endif
diff --git a/drivers/parisc/iommu-helpers.h b/drivers/parisc/iommu-helpers.h
index a9c46cc..8c33491 100644
--- a/drivers/parisc/iommu-helpers.h
+++ b/drivers/parisc/iommu-helpers.h
@@ -1,3 +1,5 @@
+#include <linux/prefetch.h>
+
/**
* iommu_fill_pdir - Insert coalesced scatter/gather chunks into the I/O Pdir.
* @ioc: The I/O Controller.
diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h
index 8a3d4fd..6afd7d6 100644
--- a/include/asm-generic/iomap.h
+++ b/include/asm-generic/iomap.h
@@ -70,7 +70,7 @@ extern void ioport_unmap(void __iomem *);
/* Destroy a virtual mapping cookie for a PCI BAR (memory or IO) */
struct pci_dev;
extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
-#else
+#elif defined(CONFIG_GENERIC_IOMAP)
struct pci_dev;
static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
{ }
diff --git a/include/asm-generic/pci_iomap.h b/include/asm-generic/pci_iomap.h
index e58fcf8..ce37349 100644
--- a/include/asm-generic/pci_iomap.h
+++ b/include/asm-generic/pci_iomap.h
@@ -25,7 +25,7 @@ extern void __iomem *__pci_ioport_map(struct pci_dev *dev, unsigned long port,
#define __pci_ioport_map(dev, port, nr) ioport_map((port), (nr))
#endif
-#else
+#elif defined(CONFIG_GENERIC_PCI_IOMAP)
static inline void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max)
{
return NULL;
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-05-19 18:51 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-19 18:51 [GIT PULL] parisc fixes for 3.3-rc5 James Bottomley
-- strict thread matches above, loose matches on Subject: below --
2012-03-03 23:44 James Bottomley
2012-03-04 0:17 ` Linus Torvalds
2012-03-04 0:31 ` James Bottomley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).