From: Sam Ravnborg <sam@ravnborg.org>
To: David Miller <davem@davemloft.net>
Cc: rostedt@goodmis.org, linux-kernel@vger.kernel.org,
srostedt@redhat.com, mingo@elte.hu, sparclinux@vger.kernel.org
Subject: Re: ftrace breaks sparc64 build
Date: Tue, 6 Jan 2009 20:52:06 +0100 [thread overview]
Message-ID: <20090106195206.GA16880@uranus.ravnborg.org> (raw)
In-Reply-To: <20090106.110114.103656110.davem@davemloft.net>
On Tue, Jan 06, 2009 at 11:01:14AM -0800, David Miller wrote:
> From: Steven Rostedt <rostedt@goodmis.org>
> Date: Tue, 6 Jan 2009 13:52:36 -0500 (EST)
>
> > I would hate to black list archs just because it gives warnings.
>
> At the very least arch/sparc should build cleanly now because
> I took your ldc.c change
Unfortunately not.
With sparc64 I saw warnings in three additional files.
I cooked up the following to avoid the warnings.
The patch to unaligned_64.c is just an ugly hack.
The patch in viohs.c makes it easier to read IMO.
The patch to init_64.c is likewise a nice cleanup.
I will re-review and submit the latter two as proper patches.
I see no way to refactor unaligned_64.c so it keep
current behaviour and is equal readable.
Sam
diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c
index 203ddfa..f005799 100644
--- a/arch/sparc/kernel/unaligned_64.c
+++ b/arch/sparc/kernel/unaligned_64.c
@@ -601,11 +601,13 @@ void handle_lddfmna(struct pt_regs *regs, unsigned long sfar, unsigned long sfsr
pc = (u32)pc;
if (get_user(insn, (u32 __user *) pc) != -EFAULT) {
int asi = decode_asi(insn, regs);
+ int rfirst, rsecond;
if ((asi > ASI_SNFL) ||
(asi < ASI_P))
goto daex;
- if (get_user(first, (u32 __user *)sfar) ||
- get_user(second, (u32 __user *)(sfar + 4))) {
+ rfirst = get_user(first, (u32 __user *)sfar);
+ rsecond = get_user(second, (u32 __user *)(sfar + 4));
+ if (rfirst || rsecond) {
if (asi & 0x2) /* NF */ {
first = 0; second = 0;
} else
diff --git a/arch/sparc/kernel/viohs.c b/arch/sparc/kernel/viohs.c
index 708fa17..aa6ac70 100644
--- a/arch/sparc/kernel/viohs.c
+++ b/arch/sparc/kernel/viohs.c
@@ -337,8 +337,10 @@ static int process_ver_nack(struct vio_driver_state *vio,
viodbg(HS, "GOT VERSION NACK maj[%u] min[%u] devclass[%u]\n",
pkt->major, pkt->minor, pkt->dev_class);
- if ((pkt->major == 0 && pkt->minor == 0) ||
- !(nver = find_by_major(vio, pkt->major)))
+ if (pkt->major == 0 && pkt->minor == 0)
+ return handshake_failure(vio);
+ nver = find_by_major(vio, pkt->major);
+ if (!nver)
return handshake_failure(vio);
if (send_version(vio, nver->major, nver->minor) < 0)
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index c04b111..26f59df 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -259,21 +259,15 @@ static inline void tsb_insert(struct tsb *ent, unsigned long tag, unsigned long
unsigned long _PAGE_ALL_SZ_BITS __read_mostly;
unsigned long _PAGE_SZBITS __read_mostly;
-void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+static void try_flush_dcache(unsigned long pfn)
{
- struct mm_struct *mm;
- struct tsb *tsb;
- unsigned long tag, flags;
- unsigned long tsb_index, tsb_hash_shift;
+ unsigned long pg_flags;
+ struct page *page;
- if (tlb_type != hypervisor) {
- unsigned long pfn = pte_pfn(pte);
- unsigned long pg_flags;
- struct page *page;
-
- if (pfn_valid(pfn) &&
- (page = pfn_to_page(pfn), page_mapping(page)) &&
- ((pg_flags = page->flags) & (1UL << PG_dcache_dirty))) {
+ page = pfn_to_page(pfn);
+ if (page && page_mapping(page)) {
+ pg_flags = page->flags;
+ if (pg_flags & (1UL << PG_dcache_dirty)) {
int cpu = ((pg_flags >> PG_dcache_cpu_shift) &
PG_dcache_cpu_mask);
int this_cpu = get_cpu();
@@ -291,6 +285,21 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t p
put_cpu();
}
}
+}
+
+void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+{
+ struct mm_struct *mm;
+ struct tsb *tsb;
+ unsigned long tag, flags;
+ unsigned long tsb_index, tsb_hash_shift;
+
+ if (tlb_type != hypervisor) {
+ unsigned long pfn = pte_pfn(pte);
+
+ if (pfn_valid(pfn))
+ try_flush_dcache(pfn);
+ }
mm = vma->vm_mm;
next prev parent reply other threads:[~2009-01-06 19:50 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-05 18:19 Sam Ravnborg
2009-01-05 19:31 ` Steven Rostedt
2009-01-05 19:42 ` [PATCH] sparc: make proces_ver_nack a bit more readable Steven Rostedt
2009-01-05 19:46 ` Steven Rostedt
2009-01-05 19:56 ` Steven Rostedt
2009-01-05 20:07 ` Sam Ravnborg
2009-01-05 20:08 ` Sam Ravnborg
2009-01-06 18:23 ` David Miller
2009-01-05 19:54 ` ftrace breaks sparc64 build Sam Ravnborg
2009-01-05 20:05 ` Steven Rostedt
2009-01-05 21:31 ` Sam Ravnborg
2009-01-05 21:52 ` Steven Rostedt
2009-01-05 22:01 ` Sam Ravnborg
2009-01-05 22:14 ` Steven Rostedt
2009-01-05 23:11 ` Heiko Carstens
2009-01-06 2:07 ` Steven Rostedt
2009-01-06 9:36 ` Heiko Carstens
2009-01-06 4:30 ` Steven Rostedt
2009-01-06 9:45 ` Heiko Carstens
2009-01-06 18:32 ` David Miller
2009-01-06 18:52 ` Steven Rostedt
2009-01-06 19:01 ` David Miller
2009-01-06 19:52 ` Sam Ravnborg [this message]
2009-01-06 20:02 ` David Miller
2009-01-05 20:30 ` [PATCH] module: clean up initialization of variable Steven Rostedt
2009-01-05 22:59 ` Harvey Harrison
2009-01-06 1:22 ` Rusty Russell
2009-01-06 2:02 ` Steven Rostedt
2009-01-05 19:48 ` ftrace breaks sparc64 build Al Viro
2009-01-05 19:55 ` Sam Ravnborg
2009-01-06 7:53 ` Jan Beulich
2009-01-06 11:35 ` Al Viro
2009-01-06 12:39 ` Jan Beulich
2009-01-06 13:34 ` Sam Ravnborg
2009-01-06 15:52 ` Al Viro
2009-01-06 18:39 ` David Miller
2009-01-08 9:28 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090106195206.GA16880@uranus.ravnborg.org \
--to=sam@ravnborg.org \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=sparclinux@vger.kernel.org \
--cc=srostedt@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome