[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAHk-=wi1TBvyk7SWX+5LLYN8ZnTJMut1keQbOrKCG=nb08hdiQ@mail.gmail.com>
Date: Sun, 12 Sep 2021 12:11:38 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Guenter Roeck <linux@...ck-us.net>
Cc: Richard Henderson <rth@...ddle.net>,
Ivan Kokshaysky <ink@...assic.park.msu.ru>,
Matt Turner <mattst88@...il.com>,
"James E . J . Bottomley" <James.Bottomley@...senpartnership.com>,
Helge Deller <deller@....de>,
"David S . Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
alpha <linux-alpha@...r.kernel.org>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
linux-parisc@...r.kernel.org, Netdev <netdev@...r.kernel.org>,
Sparse Mailing-list <linux-sparse@...r.kernel.org>
Subject: Re: [PATCH 3/4] parisc: Use absolute_pointer for memcmp on fixed
memory location
On Sun, Sep 12, 2021 at 9:02 AM Guenter Roeck <linux@...ck-us.net> wrote:
>
> - running_on_qemu = (memcmp(&PAGE0->pad0, "SeaBIOS", 8) == 0);
> + running_on_qemu = (memcmp(absolute_pointer(&PAGE0->pad0), "SeaBIOS", 8) == 0);
This seems entirely the wrong thing to do, and makes no sense. That
"&PAGE0->pad0" is a perfectly valid pointer, and that's not where the
problem is.
The problem is "PAGE0" itself:
#define PAGE0 ((struct zeropage *)__PAGE_OFFSET)
which takes that absolute offset and creates a pointer out of it.
IOW, _that_ is what should have the "absolute_pointer()" thing, and in
that context the name of that macro and its use actually makes sense.
No?
An alternative - and possibly cleaner - approach that doesn't need
absolute_pointer() at all might be to just do
extern struct zeropage PAGE0;
and then make that PAGE0 be defined to __PAGE_OFFSET in the parisc
vmlinux.lds.S file.
Then doing things like
running_on_qemu = !memcmp(&PAGE0.pad0, "SeaBIOS", 8);
would JustWork(tm).
Hmm?
Linus
Powered by blists - more mailing lists