* [PATCH 14/22] parisc: %pF is only for function pointers
[not found] <1426130037-17956-1-git-send-email-scottwood@freescale.com>
@ 2015-03-12 3:13 ` Scott Wood
2015-03-12 12:11 ` James Bottomley
0 siblings, 1 reply; 6+ messages in thread
From: Scott Wood @ 2015-03-12 3:13 UTC (permalink / raw)
To: trivial, linux-kernel; +Cc: Scott Wood, linux-parisc
Use %pS for actual addresses, otherwise you'll get bad output
on arches like ppc64 where %pF expects a function descriptor. Even on
other architectures, refrain from setting a bad example that people
copy.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Cc: linux-parisc@vger.kernel.org
---
drivers/parisc/superio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/parisc/superio.c b/drivers/parisc/superio.c
index 8be2096..38c5440 100644
--- a/drivers/parisc/superio.c
+++ b/drivers/parisc/superio.c
@@ -348,7 +348,7 @@ int superio_fixup_irq(struct pci_dev *pcidev)
BUG();
return -1;
}
- printk("superio_fixup_irq(%s) ven 0x%x dev 0x%x from %pf\n",
+ printk("superio_fixup_irq(%s) ven 0x%x dev 0x%x from %ps\n",
pci_name(pcidev),
pcidev->vendor, pcidev->device,
__builtin_return_address(0));
--
2.1.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 14/22] parisc: %pF is only for function pointers
2015-03-12 3:13 ` [PATCH 14/22] parisc: %pF is only for function pointers Scott Wood
@ 2015-03-12 12:11 ` James Bottomley
2015-03-12 14:43 ` John David Anglin
2015-03-12 16:14 ` Scott Wood
0 siblings, 2 replies; 6+ messages in thread
From: James Bottomley @ 2015-03-12 12:11 UTC (permalink / raw)
To: Scott Wood; +Cc: trivial, linux-kernel, linux-parisc
On Wed, 2015-03-11 at 22:13 -0500, Scott Wood wrote:
> Use %pS for actual addresses, otherwise you'll get bad output
> on arches like ppc64 where %pF expects a function descriptor. Even on
> other architectures, refrain from setting a bad example that people
> copy.
Are you sure about this? Parisc64 is a function description
architecture. There may be a misunderstanding about what
__builtin_return_address(0) is supposed to return, but I'm certain the
person who added the code thought it returned a function pointer, which
on parisc64 would be a descriptor.
James
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 14/22] parisc: %pF is only for function pointers
2015-03-12 12:11 ` James Bottomley
@ 2015-03-12 14:43 ` John David Anglin
2015-03-12 16:14 ` Scott Wood
1 sibling, 0 replies; 6+ messages in thread
From: John David Anglin @ 2015-03-12 14:43 UTC (permalink / raw)
To: James Bottomley, Scott Wood; +Cc: trivial, linux-kernel, linux-parisc
On 2015-03-12 8:11 AM, James Bottomley wrote:
> On Wed, 2015-03-11 at 22:13 -0500, Scott Wood wrote:
>> Use %pS for actual addresses, otherwise you'll get bad output
>> on arches like ppc64 where %pF expects a function descriptor. Even on
>> other architectures, refrain from setting a bad example that people
>> copy.
> Are you sure about this? Parisc64 is a function description
> architecture. There may be a misunderstanding about what
> __builtin_return_address(0) is supposed to return, but I'm certain the
> person who added the code thought it returned a function pointer, which
> on parisc64 would be a descriptor.
__builtin_return_address(0) returns the return address in the calling procedure
ignoring import/export stubs. There are no function descriptors for return addresses.
Thus, it can't return a function pointer.
There are no function descriptors in 32-bit parisc when the -mfast-indirect-calls
compiler option is used.
This option used to be used for 64-bit kernel builds but this broke when the
-mfast-indirect-calls was fixed for user space (gcl uses it). I worked a bit
on trying to eliminate function descriptors from the 64-bit kernel for performance
but I don't have a working change.
Dave
--
John David Anglin dave.anglin@bell.net
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 14/22] parisc: %pF is only for function pointers
2015-03-12 12:11 ` James Bottomley
2015-03-12 14:43 ` John David Anglin
@ 2015-03-12 16:14 ` Scott Wood
2015-03-12 18:04 ` James Bottomley
1 sibling, 1 reply; 6+ messages in thread
From: Scott Wood @ 2015-03-12 16:14 UTC (permalink / raw)
To: James Bottomley; +Cc: trivial, linux-kernel, linux-parisc
On Thu, 2015-03-12 at 08:11 -0400, James Bottomley wrote:
> On Wed, 2015-03-11 at 22:13 -0500, Scott Wood wrote:
> > Use %pS for actual addresses, otherwise you'll get bad output
> > on arches like ppc64 where %pF expects a function descriptor. Even on
> > other architectures, refrain from setting a bad example that people
> > copy.
>
> Are you sure about this? Parisc64 is a function description
> architecture. There may be a misunderstanding about what
> __builtin_return_address(0) is supposed to return, but I'm certain the
> person who added the code thought it returned a function pointer, which
> on parisc64 would be a descriptor.
I wasn't aware that parisc64 used descriptors, but I don't see how you'd
get one out of __builtin_return_address(0) since it's not usually a
function entry point (plus, GCC documents it as returning void *).
-Scott
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 14/22] parisc: %pF is only for function pointers
2015-03-12 16:14 ` Scott Wood
@ 2015-03-12 18:04 ` James Bottomley
2015-03-12 19:48 ` Aaro Koskinen
0 siblings, 1 reply; 6+ messages in thread
From: James Bottomley @ 2015-03-12 18:04 UTC (permalink / raw)
To: Scott Wood; +Cc: trivial, linux-kernel, linux-parisc
On Thu, 2015-03-12 at 11:14 -0500, Scott Wood wrote:
> On Thu, 2015-03-12 at 08:11 -0400, James Bottomley wrote:
> > On Wed, 2015-03-11 at 22:13 -0500, Scott Wood wrote:
> > > Use %pS for actual addresses, otherwise you'll get bad output
> > > on arches like ppc64 where %pF expects a function descriptor. Even on
> > > other architectures, refrain from setting a bad example that people
> > > copy.
> >
> > Are you sure about this? Parisc64 is a function description
> > architecture. There may be a misunderstanding about what
> > __builtin_return_address(0) is supposed to return, but I'm certain the
> > person who added the code thought it returned a function pointer, which
> > on parisc64 would be a descriptor.
>
> I wasn't aware that parisc64 used descriptors, but I don't see how you'd
> get one out of __builtin_return_address(0) since it's not usually a
> function entry point (plus, GCC documents it as returning void *).
I was more thinking that this message is printed for every boot with a
superio chip (which is a lot of our boxes). How come no-one has
complained on parisc64 if it's doing the wrong thing.
James
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 14/22] parisc: %pF is only for function pointers
2015-03-12 18:04 ` James Bottomley
@ 2015-03-12 19:48 ` Aaro Koskinen
0 siblings, 0 replies; 6+ messages in thread
From: Aaro Koskinen @ 2015-03-12 19:48 UTC (permalink / raw)
To: James Bottomley; +Cc: Scott Wood, trivial, linux-kernel, linux-parisc
Hi,
On Thu, Mar 12, 2015 at 02:04:41PM -0400, James Bottomley wrote:
> On Thu, 2015-03-12 at 11:14 -0500, Scott Wood wrote:
> > On Thu, 2015-03-12 at 08:11 -0400, James Bottomley wrote:
> > > On Wed, 2015-03-11 at 22:13 -0500, Scott Wood wrote:
> > > > Use %pS for actual addresses, otherwise you'll get bad output
> > > > on arches like ppc64 where %pF expects a function descriptor. Even on
> > > > other architectures, refrain from setting a bad example that people
> > > > copy.
> > >
> > > Are you sure about this? Parisc64 is a function description
> > > architecture. There may be a misunderstanding about what
> > > __builtin_return_address(0) is supposed to return, but I'm certain the
> > > person who added the code thought it returned a function pointer, which
> > > on parisc64 would be a descriptor.
> >
> > I wasn't aware that parisc64 used descriptors, but I don't see how you'd
> > get one out of __builtin_return_address(0) since it's not usually a
> > function entry point (plus, GCC documents it as returning void *).
>
> I was more thinking that this message is printed for every boot with a
> superio chip (which is a lot of our boxes). How come no-one has
> complained on parisc64 if it's doing the wrong thing.
It's dead code behind #ifdef DEBUG_SUPERIO_INIT.
A.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-03-12 19:48 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1426130037-17956-1-git-send-email-scottwood@freescale.com>
2015-03-12 3:13 ` [PATCH 14/22] parisc: %pF is only for function pointers Scott Wood
2015-03-12 12:11 ` James Bottomley
2015-03-12 14:43 ` John David Anglin
2015-03-12 16:14 ` Scott Wood
2015-03-12 18:04 ` James Bottomley
2015-03-12 19:48 ` Aaro Koskinen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox