Re: [PATCH] parisc: report inequivalent aliases only for writeable mappings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/22/2014 4:31 PM, Mikulas Patocka wrote:

On Wed, 22 Jan 2014, James Bottomley wrote:

On Wed, 2014-01-22 at 15:39 -0500, Mikulas Patocka wrote:
On Wed, 22 Jan 2014, James Bottomley wrote:

On Wed, 2014-01-22 at 14:11 -0500, Mikulas Patocka wrote:
[no comment on the merits of the patch, just the wording of the change
log]
This patch changes it so that INEQUIVALENT ALIASES are only reported for
writeable mappings. PA-RISC specification allows inequivalent aliases for
read-only mappings, so there's no need to report them as an error.
No, it doesn't.  The spec says no inequivalent aliases at all for
certain types of CPU (that was the cause of the inability to boot on the
CPU with the combined PIPT/VIPT cache) ... we believe we skirted the
requirements with some judicious flushing but we can't say it was
supported by the docs.

James
A citation from Parisc 2.0 specification, Appendix F, section Address
Aliasing:

"Software is allowed to have any number of read-only non-equivalently
aliased translations to a physical page, as long as there are no other
translations to the page. This is referred to as read-only non-equivalent
aliasing."
The kernel alias is read/write.

James
But the kernel alias shouldn't be loaded in the TLB for dynamic libraries
that are mapped read-only.
The majority messages occur because of a binutils bug that was fixed several years ago. There's a non equivalent mapping between the last code page and the start of writable data in almost every application and shared library in Debian 5. This is fixed in the current
Debian unstable and Gentoo.  So, I recommend updating.

When the user aliases are re-enabled, we have the following situation when non equivalent
aliases exist:

"All other uses of non-equivalent aliasing (including simultaneously enabling multiple non-equivalently aliased translations where one or more allow for write access) are prohibited, and can cause machine checks or silent data corruption, including data corruption of unrelated memory on unrelated pages."

I'm not sure that we handle correctly handle the case where there are only equivalent user aliases. Calling flush_dcache_page() was a step in this direction but unfortunately Helge and I have found a side effect (zombies run by expect in gcc/gdb testsuites). I've also found another situation where
non equivalent aliases are generated.

I tend to think message should be a debug message.

Dave

--
John David Anglin    dave.anglin@xxxxxxxx

--
To unsubscribe from this list: send the line "unsubscribe linux-parisc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux