<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded">
    <title>gmane.linux.ports.ppc.embedded</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59469"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59468"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59467"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59466"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59465"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59464"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59463"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59462"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59461"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59460"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59459"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59458"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59457"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59456"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59455"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59454"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59453"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59452"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59451"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59450"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59469">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59469</link>
    <description>&lt;pre&gt;
Ahh, no, that was me.  I was contemplating adding the dt entries in this
merge window at one point and must've got my wires crossed.  Sorry for
the confusion.

thx,

Jason.
&lt;/pre&gt;</description>
    <dc:creator>Jason Cooper</dc:creator>
    <dc:date>2013-05-22T18:58:35</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59468">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59468</link>
    <description>&lt;pre&gt;
True. But there is no node for ethernet controllers in kirkwood.dtsi
yet. It will be there with mv643xx_eth DT patches applied and that is
when the corresponding replacement patch should also be taken in.

I was just confused about your referral to the merge window, because I
guess it is up to David Miller to decide when/whether to take
mv643xx_eth patches in.

Sebastian
&lt;/pre&gt;</description>
    <dc:creator>Sebastian Hesselbarth</dc:creator>
    <dc:date>2013-05-22T18:55:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59467">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59467</link>
    <description>&lt;pre&gt;
I already thought about bootloaders not setting the register, but I will
not start parsing 1001 places for a valid MAC only for those. Also
reading the MAC address registers is default behavior of mv643xx_eth if
no MAC address is passed through platform_data.

But you are right, there is plenty of sanity checks in the workaround to
ensure that local-mac-address is only overwritten by it when
- you are on DT
- there is no valid MAC address in that node (of_get_mac_address)
- there is a local-mac-address property with a length of 6 bytes

So this workaround only applies on DT booted kernels with no mac set in
DT.

Sebastian
&lt;/pre&gt;</description>
    <dc:creator>Sebastian Hesselbarth</dc:creator>
    <dc:date>2013-05-22T18:51:26</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59466">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59466</link>
    <description>&lt;pre&gt;
I thought you were replacing the unconditional ethernet clock grabbing
with reading the mac from the registers and updating the dtb?  In
mach-kirkwood/board-dt.c?

confused. :-/

Jason.
&lt;/pre&gt;</description>
    <dc:creator>Jason Cooper</dc:creator>
    <dc:date>2013-05-22T18:49:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59465">
    <title>Re: Build regressions/improvements in v3.10-rc2</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59465</link>
    <description>&lt;pre&gt;
One false positive due to a line concatenation, and

  + error: drivers/built-in.o: undefined reference to `il_pm_ops':  =&amp;gt; .data+0x51ce4)

powerpc-randconfig


Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert&amp;lt; at &amp;gt;linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
    -- Linus Torvalds
&lt;/pre&gt;</description>
    <dc:creator>Geert Uytterhoeven</dc:creator>
    <dc:date>2013-05-22T18:36:04</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59464">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59464</link>
    <description>&lt;pre&gt;
Which patch do you mean? The local-mac-address workaround will only be
available for DT mv643xx_eth because it uses the DT node to store the
MAC.

Anyway, I found the bit that caused the other issue. It is the
Clk125_Bypass_En bit in PORT_SERIAL_CONTROL1 register. What bothers me
about it is:
- Only Dove and Kirkwood have the bit, MV78x00 doesn't have it, Orion5x
   doesn't have the register at all. With ppc mv64x60 I can only guess,
   but think it is like in Orion5x.
- Reset value of that bit should be 0, but after gating clock on
   Kirkwood it is set to 1 causing wrong port clock to be selected.
   Also Thomas Petazzoni confirmed that it is set after reset so
   either FS is wrong about it or BootROM messes with it.
- Kirkwood and Dove FS tell me that port link must be down when you
   change the bit.

As I can't be sure about how mv643xx_eth will behave on other platforms
except Kirkwood and Dove when writing that register, I tend to force
that bit to zero in the driver but only for those two by #ifdef&lt;/pre&gt;</description>
    <dc:creator>Sebastian Hesselbarth</dc:creator>
    <dc:date>2013-05-22T18:44:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59463">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59463</link>
    <description>&lt;pre&gt; 

That sounds great, but, FWIW, our bootloaders don't set the MAC
address registers. Does the work around only trigger if the
local-mac-address property is 0?

Jason
&lt;/pre&gt;</description>
    <dc:creator>Jason Gunthorpe</dc:creator>
    <dc:date>2013-05-22T18:24:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59462">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59462</link>
    <description>&lt;pre&gt;
Cool, chances are, we should be able to take that patch in by itself for
this merge window...

thx,

Jason.
&lt;/pre&gt;</description>
    <dc:creator>Jason Cooper</dc:creator>
    <dc:date>2013-05-22T17:48:15</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59461">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59461</link>
    <description>&lt;pre&gt;
Hmm, maybe a little bit too early. While restoring the MAC address now
works, another bug arises which I guess is related with phy setup
and aneg.

Will investigate and update patch set accordingly.

Sebastian
&lt;/pre&gt;</description>
    <dc:creator>Sebastian Hesselbarth</dc:creator>
    <dc:date>2013-05-22T17:42:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59460">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59460</link>
    <description>&lt;pre&gt;
Sweet!


Please post, in-reply-to v4 is fine.

thx,

Jason.
&lt;/pre&gt;</description>
    <dc:creator>Jason Cooper</dc:creator>
    <dc:date>2013-05-22T17:35:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59459">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59459</link>
    <description>&lt;pre&gt;
Not neccessary anyway, after talking Jason C in a Kirkwood-only
workaround I prepared a patch that reads mac address registers early
and stores it in the local-mac-address property.

Just tested on Dockstar with gated clocks and modular DT mv643xx_eth.

Will append to the DT mv643xx_eth patch set if a v5 will be required
or as single patch prior Jason C taking in the ARM part of it
otherwise.

Sebastian
&lt;/pre&gt;</description>
    <dc:creator>Sebastian Hesselbarth</dc:creator>
    <dc:date>2013-05-22T17:32:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59458">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59458</link>
    <description>&lt;pre&gt;

Sorry, no, we don't use ATAGs here, our platforms start the kernel
with a correct DTB that has the correct mac address to use. My patch
was to have the driver accept it, and I think Sebastian has already
got that functionality...

Jason
&lt;/pre&gt;</description>
    <dc:creator>Jason Gunthorpe</dc:creator>
    <dc:date>2013-05-22T16:59:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59457">
    <title>Re: [PATCH v4 06/12] ARM: dove: add gigabit ethernet and mvmdio device tree nodes</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59457</link>
    <description>&lt;pre&gt;
Yes, you're right.

thx,

Jason.
&lt;/pre&gt;</description>
    <dc:creator>Jason Cooper</dc:creator>
    <dc:date>2013-05-22T17:01:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59456">
    <title>[PATCH -V9 19/20] powerpc: use smp_rmb when looking at deposisted pgtable to store hash index</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59456</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

We need to use smb_rmb when looking at hpte slot array. Otherwise we could
reorder the hpte_slot array load bfore even we marked the pmd trans huge.
Related smb_wmb()s is done in pgtable_trans_huge_deposit when we deposit
a pgtable.

Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/include/asm/pgtable-ppc64.h | 15 +++++++++++++++
 arch/powerpc/mm/hugepage-hash64.c        |  6 +-----
 arch/powerpc/mm/pgtable_64.c             |  6 +-----
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/include/asm/pgtable-ppc64.h b/arch/powerpc/include/asm/pgtable-ppc64.h
index d046289..46db094 100644
--- a/arch/powerpc/include/asm/pgtable-ppc64.h
+++ b/arch/powerpc/include/asm/pgtable-ppc64.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -10,6 +10,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #else
 #include &amp;lt;asm/pgtable-ppc64-4k.h&amp;gt;
 #endif
+#include &amp;lt;asm/barrier.h&amp;gt;
 
 #define FIRST_USER_ADDRESS0
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -393,6 +394,20 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static inline void mark_hpte_slot_valid(unsigned char *hpte_slot_&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:51</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59455">
    <title>[PATCH -V9 20/20] powerpc: split hugepage when using subpage protection</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59455</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

We find all the overlapping vma and mark them such that we don't allocate
hugepage in that range. Also we split existing huge page so that the
normal page hash can be invalidated and new page faulted in with new
protection bits.

Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/mm/subpage-prot.c | 48 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/arch/powerpc/mm/subpage-prot.c b/arch/powerpc/mm/subpage-prot.c
index 7c415dd..aa74acb 100644
--- a/arch/powerpc/mm/subpage-prot.c
+++ b/arch/powerpc/mm/subpage-prot.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -130,6 +130,53 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void subpage_prot_clear(unsigned long addr, unsigned long len)
 up_write(&amp;amp;mm-&amp;gt;mmap_sem);
 }
 
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+static int subpage_walk_pmd_entry(pmd_t *pmd, unsigned long addr,
+  unsigned long end, struct mm_walk *walk)
+{
+struct vm_area_struct *vma = walk-&amp;gt;private;
+split_huge_page_pmd(vma, addr, pmd);
+ret&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:52</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59454">
    <title>[PATCH -V9 18/20] powerpc: disable assert_pte_locked for collapse_huge_page</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59454</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

With THP we set pmd to none, before we do pte_clear. Hence we can't
walk page table to get the pte lock ptr and verify whether it is locked.
THP do take pte lock before calling pte_clear. So we don't change the locking
rules here. It is that we can't use page table walking to check whether
pte locks are held with THP.

Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/mm/pgtable.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
index 214130a..edda589 100644
--- a/arch/powerpc/mm/pgtable.c
+++ b/arch/powerpc/mm/pgtable.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -235,6 +235,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void assert_pte_locked(struct mm_struct *mm, unsigned long addr)
 pud = pud_offset(pgd, addr);
 BUG_ON(pud_none(*pud));
 pmd = pmd_offset(pud, addr);
+/*
+ * khugepaged to collapse normal pages to hugepage, first set
+ * pmd to none to force page fault/gup to take mmap_sem. After
+ * pmd is set to none, we d&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59453">
    <title>[PATCH -V9 08/20] powerpc/THP: Implement transparent hugepages for ppc64</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59453</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

We now have pmd entries covering 16MB range and the PMD table double its original size.
We use the second half of the PMD table to deposit the pgtable (PTE page).
The depoisted PTE page is further used to track the HPTE information. The information
include [ secondary group | 3 bit hidx | valid ]. We use one byte per each HPTE entry.
With 16MB hugepage and 64K HPTE we need 256 entries and with 4K HPTE we need
4096 entries. Both will fit in a 4K PTE page. On hugepage invalidate we need to walk
the PTE page and invalidate all valid HPTEs.

This patch implements necessary arch specific functions for THP support and also
hugepage invalidate logic. These PMD related functions are intentionally kept
similar to their PTE counter-part.

Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/include/asm/pgtable-ppc64.h | 200 ++++++++++++++++-
 arch/powerpc/include/asm/pgtable.h       |   4 +
 arch/powerpc/include/asm/tlbflush.h  &lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59452">
    <title>[PATCH -V9 13/20] powerpc/THP: Add code to handle HPTE faults for hugepages</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59452</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

The deposted PTE page in the second half of the PMD table is used to
track the state on hash PTEs. After updating the HPTE, we mark the
coresponding slot in the deposted PTE page valid.

Reviewed-by: David Gibson &amp;lt;david&amp;lt; at &amp;gt;gibson.dropbear.id.au&amp;gt;
Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/include/asm/mmu-hash64.h |  13 +++
 arch/powerpc/mm/Makefile              |   1 +
 arch/powerpc/mm/hash_utils_64.c       |  21 +++-
 arch/powerpc/mm/hugepage-hash64.c     | 176 ++++++++++++++++++++++++++++++++++
 4 files changed, 207 insertions(+), 4 deletions(-)
 create mode 100644 arch/powerpc/mm/hugepage-hash64.c

diff --git a/arch/powerpc/include/asm/mmu-hash64.h b/arch/powerpc/include/asm/mmu-hash64.h
index 2accc96..3d6fbb0 100644
--- a/arch/powerpc/include/asm/mmu-hash64.h
+++ b/arch/powerpc/include/asm/mmu-hash64.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -340,6 +340,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
 int _&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59451">
    <title>[PATCH -V9 15/20] powerpc: Prevent gcc to re-read the pagetables</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59451</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

GCC is very likely to read the pagetables just once and cache them in
the local stack or in a register, but it is can also decide to re-read
the pagetables. The problem is that the pagetable in those places can
change from under gcc.

With THP/hugetlbfs the pmd (and pgd for hugetlbfs giga pages) can
change under gup_fast. The pages won't be freed untill we finish
gup fast because we have irq disabled and we free these pages via
rcu callback.

Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 arch/powerpc/mm/gup.c         | 8 ++++----
 arch/powerpc/mm/hugetlbpage.c | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/mm/gup.c b/arch/powerpc/mm/gup.c
index 3d36fd7..4823e4d 100644
--- a/arch/powerpc/mm/gup.c
+++ b/arch/powerpc/mm/gup.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -34,7 +34,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static noinline int gup_pte_range(pmd_t pmd, unsigned long addr,
 
 ptep = pte_offset_kernel(&amp;amp;pmd, addr);
 do {
-pte_t pte = *ptep;
+pte_t pte =&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:47</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59450">
    <title>[PATCH -V9 05/20] mm/THP: Don't use HPAGE_SHIFT in transparent hugepage code</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59450</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

For architectures like powerpc that support multiple explicit hugepage
sizes, HPAGE_SHIFT indicate the default explicit hugepage shift. For
THP to work the hugepage size should be same as PMD_SIZE. So use
PMD_SHIFT directly. So move the define outside CONFIG_TRANSPARENT_HUGEPAGE
#ifdef because we want to use these defines in generic code with
if (pmd_trans_huge()) conditional.

Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 include/linux/huge_mm.h | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index 528454c..cc276d2 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -58,12 +58,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern pmd_t *page_check_address_pmd(struct page *page,
 
 #define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT)
 #define HPAGE_PMD_NR (1&amp;lt;&amp;lt;HPAGE_PMD_ORDER)
+#define HPAGE_PMD_SHIFT PMD_SHIFT
+#define HPAGE_PMD_SIZE((1UL) &amp;lt;&amp;lt; HPAGE_PMD_SHIFT)
+#defin&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59449">
    <title>[PATCH -V9 04/20] mm/THP: withdraw the pgtable after pmdp related operations</title>
    <link>http://permalink.gmane.org/gmane.linux.ports.ppc.embedded/59449</link>
    <description>&lt;pre&gt;From: "Aneesh Kumar K.V" &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;

For architectures like ppc64 we look at deposited pgtable when
calling pmdp_get_and_clear. So do the pgtable_trans_huge_withdraw
after finishing pmdp related operations.

Reviewed-by: Andrea Arcangeli &amp;lt;aarcange&amp;lt; at &amp;gt;redhat.com&amp;gt;
Signed-off-by: Aneesh Kumar K.V &amp;lt;aneesh.kumar&amp;lt; at &amp;gt;linux.vnet.ibm.com&amp;gt;
---
 mm/huge_memory.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 6b785e1..5c4fac2 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1360,9 +1360,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
 struct page *page;
 pgtable_t pgtable;
 pmd_t orig_pmd;
-pgtable = pgtable_trans_huge_withdraw(tlb-&amp;gt;mm, pmd);
+/*
+ * For architectures like ppc64 we look at deposited pgtable
+ * when calling pmdp_get_and_clear. So do the
+ * pgtable_trans_huge_withdraw after finishing pmdp related
+ * operations.
+ */
 orig_pmd = pmdp_get_and_clear(tlb-&amp;gt;mm, addr,&lt;/pre&gt;</description>
    <dc:creator>Aneesh Kumar K.V</dc:creator>
    <dc:date>2013-05-22T16:57:36</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.ports.ppc.embedded">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.ports.ppc.embedded</link>
  </textinput>
</rdf:RDF>
