* [PATCH] powerpc/mm/radix: Make Radix require HUGETLB_PAGE
From: Michael Ellerman @ 2019-04-17 7:41 UTC (permalink / raw)
To: linuxppc-dev; +Cc: stewart, aneesh.kumar, joel
Joel reported weird crashes using skiroot_defconfig, in his case we
jumped into an NX page:
kernel tried to execute exec-protected page (c000000002bff4f0) - exploit attempt? (uid: 0)
BUG: Unable to handle kernel instruction fetch
Faulting instruction address: 0xc000000002bff4f0
Looking at the disassembly, we had simply branched to that address:
c000000000c001bc 49fff335 bl c000000002bff4f0
But that didn't match the original kernel image:
c000000000c001bc 4bfff335 bl c000000000bff4f0 <kobject_get+0x8>
When STRICT_KERNEL_RWX is enabled, and we're using the radix MMU, we
call radix__change_memory_range() late in boot to change page
protections. We do that both to mark rodata read only and also to mark
init text no-execute. That involves walking the kernel page tables,
and clearing _PAGE_WRITE or _PAGE_EXEC respectively.
With radix we may use hugepages for the linear mapping, so the code in
radix__change_memory_range() uses eg. pmd_huge() to test if it has
found a huge mapping, and if so it stops the page table walk and
changes the PMD permissions.
However if the kernel is built without HUGETLBFS support, pmd_huge()
is just a #define that always returns 0. That causes the code in
radix__change_memory_range() to incorrectly interpret the PMD value as
a pointer to a PTE page rather than as a PTE at the PMD level.
Unfortunately the combination of _PAGE_PTE and _PAGE_PRESENT in the
high bits of the PMD entry give us 0xc in the top nibble which means
the PMD entry happens to look like a valid pointer into the linear
mapping.
We can see this using `dv` in xmon:
0:mon> dv c000000000000000
pgd @ 0xc000000001740000
pgdp @ 0xc000000001740000 = 0x80000000ffffb009
pudp @ 0xc0000000ffffb000 = 0x80000000ffffa009
pmdp @ 0xc0000000ffffa000 = 0xc00000000000018f <- not a pointer
ptep @ 0xc000000000000100 = 0xa64bb17da64ab07d <- kernel text
The end result is we treat the value at 0xc000000000000100 as a PTE
and clear _PAGE_WRITE or _PAGE_EXEC, potentially corrupting the code
at that address.
In Joel's specific case we cleared the sign bit in the offset of the
branch, causing a backward branch to turn into a forward branch which
caused us to branch into a non-executable page. However the exact
nature of the crash depends on kernel version, compiler version, and
other factors.
We need to fix radix__change_memory_range() to not use accessors that
depend on HUGETLBFS, but we also have radix memory hotplug code that
uses pmd_huge() etc that will also need fixing. So for now just
disallow the broken combination of Radix with HUGETLBFS disabled.
The only defconfig we have that is affected is skiroot_defconfig, so
turn on HUGETLBFS there so that it still gets Radix.
Fixes: 566ca99af026 ("powerpc/mm/radix: Add dummy radix_enabled()")
Cc: stable@vger.kernel.org # v4.7+
Reported-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/configs/skiroot_defconfig | 1 +
arch/powerpc/platforms/Kconfig.cputype | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/configs/skiroot_defconfig b/arch/powerpc/configs/skiroot_defconfig
index 5ba131c30f6b..1bcd468ab422 100644
--- a/arch/powerpc/configs/skiroot_defconfig
+++ b/arch/powerpc/configs/skiroot_defconfig
@@ -266,6 +266,7 @@ CONFIG_UDF_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_PROC_KCORE=y
+CONFIG_HUGETLBFS=y
# CONFIG_MISC_FILESYSTEMS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set
CONFIG_NLS=y
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 842b2c7e156a..50cd09b4e05d 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -324,7 +324,7 @@ config ARCH_ENABLE_SPLIT_PMD_PTLOCK
config PPC_RADIX_MMU
bool "Radix MMU Support"
- depends on PPC_BOOK3S_64
+ depends on PPC_BOOK3S_64 && HUGETLB_PAGE
select ARCH_HAS_GIGANTIC_PAGE if (MEMORY_ISOLATION && COMPACTION) || CMA
default y
help
--
2.20.1
^ permalink raw reply related
* Re: Linux 5.1-rc5
From: Martin Schwidefsky @ 2019-04-17 7:46 UTC (permalink / raw)
To: Linus Torvalds
Cc: Christoph Hellwig, linuxppc-dev, Linux List Kernel Mailing,
linux-s390
In-Reply-To: <CAHk-=wj2SW0Zno0Yn=S9wrsmHOKV0FiFPiPS4TM=Gn8yjfYXAg@mail.gmail.com>
On Tue, 16 Apr 2019 09:49:46 -0700
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> On Tue, Apr 16, 2019 at 9:16 AM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > We actually already *have* this function.
> >
> > It's called "gup_fast_permitted()" and it's used by x86-64 to verify
> > the proper address range. Exactly like s390 needs..
> >
> > Could you please use that instead?
>
> IOW, something like the attached.
>
> Obviously untested. And maybe 'current' isn't declared in
> <asm/pgtable.h>, in which case you'd need to modify it to instead make
> the inline function be "s390_gup_fast_permitted()" that takes a
> pointer to the mm, and do something like
>
> #define gup_fast_permitted(start, pages) \
> s390_gup_fast_permitted(current->mm, start, pages)
>
> instead.
>
> But I think you get the idea..
Nice, I did not realize that gup_fast_permitted is a platform
override-able function. So that part is doable in arch/s390. But I
spoke to soon, I got my first crash and realized that the common gup code
is not usable as it is. The reason is this e.g. this sequence:
pgdp = pgd_offset(current->mm, addr);
pgd_t pgd = READ_ONCE(*pgdp);
/* some checking on pgd */
gup_p4d_range(pgd, addr, next, write, pages, nr);
p4dp = p4d_offset(&pgd, addr);
p4d_t p4d = READ_ONCE(*p4dp);
/* some checking on p4d */
gup_pud_range(p4d, addr, next, write, pages, nr);
pudp = pud_offset(&p4d, addr);
pud_t pud = READ_ONCE(*pudp);
/* some checking on pud */
gup_pmd_range(pud, addr, next, write, pages, nr;
Each step along the way will read the page table entry and pass the
table entry to the next function. This clashes with the page table
folding on s390. The s390 gup code looks more like this:
pgdp = pgd_offset(current->mm, addr);
/* some checking on pgd */
pgd_t pgd = READ_ONCE(*pgdp);
gup_p4d_range(pgdp, pgd, addr, next, write, pages, &nr);
p4dp = p4d_offset(pgdp, addr);
p4d_t p4d = READ_ONCE(*p4dp);
/* some checking on p4d */
gup_pud_range(p4dp, p4d, addr, next, write, pages, nr);
pudp = pud_offset(p4dp, addr);
pud_t pud = READ_ONCE(*pudp);
/* some checking on pud */
gup_pmd_range(pudp, pud, addr, next, write, pages, nr;
There are magic dereferences in the s390 versions of p4d_offset,
pud_offset and pmd_offset functions. To make this work the pointer
passed to these functions may not be the local copy of the already
dereferenced table entry. I'll cook up a patch for the common code.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
^ permalink raw reply
* Re: Linux 5.1-rc5
From: Martin Schwidefsky @ 2019-04-17 8:02 UTC (permalink / raw)
To: Linus Torvalds
Cc: Christoph Hellwig, linuxppc-dev, Linux List Kernel Mailing,
linux-s390
In-Reply-To: <20190417094637.51ad4c67@mschwideX1>
On Wed, 17 Apr 2019 09:46:37 +0200
Martin Schwidefsky <schwidefsky@de.ibm.com> wrote:
> On Tue, 16 Apr 2019 09:49:46 -0700
> Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
> > On Tue, Apr 16, 2019 at 9:16 AM Linus Torvalds
> > <torvalds@linux-foundation.org> wrote:
> > >
> > > We actually already *have* this function.
> > >
> > > It's called "gup_fast_permitted()" and it's used by x86-64 to verify
> > > the proper address range. Exactly like s390 needs..
> > >
> > > Could you please use that instead?
> >
> > IOW, something like the attached.
> >
> > Obviously untested. And maybe 'current' isn't declared in
> > <asm/pgtable.h>, in which case you'd need to modify it to instead make
> > the inline function be "s390_gup_fast_permitted()" that takes a
> > pointer to the mm, and do something like
> >
> > #define gup_fast_permitted(start, pages) \
> > s390_gup_fast_permitted(current->mm, start, pages)
> >
> > instead.
> >
> > But I think you get the idea..
>
> Nice, I did not realize that gup_fast_permitted is a platform
> override-able function. So that part is doable in arch/s390. But I
> spoke to soon, I got my first crash and realized that the common gup code
> is not usable as it is. The reason is this e.g. this sequence:
>
> pgdp = pgd_offset(current->mm, addr);
> pgd_t pgd = READ_ONCE(*pgdp);
> /* some checking on pgd */
> gup_p4d_range(pgd, addr, next, write, pages, nr);
>
> p4dp = p4d_offset(&pgd, addr);
> p4d_t p4d = READ_ONCE(*p4dp);
> /* some checking on p4d */
> gup_pud_range(p4d, addr, next, write, pages, nr);
>
> pudp = pud_offset(&p4d, addr);
> pud_t pud = READ_ONCE(*pudp);
> /* some checking on pud */
> gup_pmd_range(pud, addr, next, write, pages, nr;
>
> Each step along the way will read the page table entry and pass the
> table entry to the next function. This clashes with the page table
> folding on s390. The s390 gup code looks more like this:
>
> pgdp = pgd_offset(current->mm, addr);
> /* some checking on pgd */
> pgd_t pgd = READ_ONCE(*pgdp);
> gup_p4d_range(pgdp, pgd, addr, next, write, pages, &nr);
>
> p4dp = p4d_offset(pgdp, addr);
> p4d_t p4d = READ_ONCE(*p4dp);
> /* some checking on p4d */
> gup_pud_range(p4dp, p4d, addr, next, write, pages, nr);
>
> pudp = pud_offset(p4dp, addr);
> pud_t pud = READ_ONCE(*pudp);
> /* some checking on pud */
> gup_pmd_range(pudp, pud, addr, next, write, pages, nr;
>
> There are magic dereferences in the s390 versions of p4d_offset,
> pud_offset and pmd_offset functions. To make this work the pointer
> passed to these functions may not be the local copy of the already
> dereferenced table entry. I'll cook up a patch for the common code.
Grumpf, that does *not* work. For gup the table entries may be read only
once. Now I remember why I open-coded p4d_offset, pud_offset and pmd_offset
in arch/s390/mm/gup.c, to avoid to read the table entries twice.
It will be hard to use the common gup code after all.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
^ permalink raw reply
* Re: [PATCH] powerpc/mm/radix: Make Radix require HUGETLB_PAGE
From: Michael Ellerman @ 2019-04-17 8:51 UTC (permalink / raw)
To: linuxppc-dev; +Cc: stewart, aneesh.kumar, joel
In-Reply-To: <20190417074140.25130-1-mpe@ellerman.id.au>
Michael Ellerman <mpe@ellerman.id.au> writes:
> Joel reported weird crashes using skiroot_defconfig, in his case we
> jumped into an NX page:
>
> kernel tried to execute exec-protected page (c000000002bff4f0) - exploit attempt? (uid: 0)
> BUG: Unable to handle kernel instruction fetch
> Faulting instruction address: 0xc000000002bff4f0
>
> Looking at the disassembly, we had simply branched to that address:
>
> c000000000c001bc 49fff335 bl c000000002bff4f0
>
> But that didn't match the original kernel image:
>
> c000000000c001bc 4bfff335 bl c000000000bff4f0 <kobject_get+0x8>
>
> When STRICT_KERNEL_RWX is enabled, and we're using the radix MMU, we
> call radix__change_memory_range() late in boot to change page
> protections. We do that both to mark rodata read only and also to mark
> init text no-execute. That involves walking the kernel page tables,
> and clearing _PAGE_WRITE or _PAGE_EXEC respectively.
>
> With radix we may use hugepages for the linear mapping, so the code in
> radix__change_memory_range() uses eg. pmd_huge() to test if it has
> found a huge mapping, and if so it stops the page table walk and
> changes the PMD permissions.
>
> However if the kernel is built without HUGETLBFS support, pmd_huge()
> is just a #define that always returns 0. That causes the code in
> radix__change_memory_range() to incorrectly interpret the PMD value as
> a pointer to a PTE page rather than as a PTE at the PMD level.
>
> Unfortunately the combination of _PAGE_PTE and _PAGE_PRESENT in the
> high bits of the PMD entry give us 0xc in the top nibble which means
> the PMD entry happens to look like a valid pointer into the linear
> mapping.
Aneesh points out this paragraph is confusing. Those bits only make the
pointer *look* valid, it doesn't actually make any difference to the
code, as we mask and re-add those bits anyway.
I'll drop this paragraph when committing.
cheers
^ permalink raw reply
* Re: [PATCH V2 1/2] ASoC: fsl_asrc: replace the process_option table with function
From: S.j. Wang @ 2019-04-17 9:04 UTC (permalink / raw)
To: Nicolin Chen
Cc: alsa-devel@alsa-project.org, timur@kernel.org,
Xiubo.Lee@gmail.com, festevam@gmail.com,
linux-kernel@vger.kernel.org, broonie@kernel.org,
linuxppc-dev@lists.ozlabs.org
Hi
>
>
> On Thu, Apr 11, 2019 at 09:39:06AM +0000, S.j. Wang wrote:
>
> > +/*
> > + * Select the pre-processing and post-processing options
>
> By aligning with other function comments:
> /**
> * Select the pre-processing and post-processing options
>
> > + *
> > + * Fsin: input sample rate
> > + * Fsout: output sample rate
>
> I would suggest to use inrate and outrate to keep naming consistent.
>
> > + * pre_proc: return value for pre-processing option
> > + * post_proc: return value for post-processing option */ static int
> > +fsl_asrc_sel_proc(int Fsin, int Fsout, int *pre_proc, int *post_proc)
> > +{
> > + bool det_out_op2_cond;
> > + bool det_out_op0_cond;
>
> By looking at the comments below. Probably better to rename them
> bool post_proc_cond2, post_proc_cond0;
>
> > + /* Codition for selection of post-processing */
>
> "Codition" -> "Conditions"
>
> > + det_out_op2_cond = (((Fsin * 15 > Fsout * 16) & (Fsout < 56000)) |
> > + ((Fsin > 56000) & (Fsout <
> > + 56000)));
>
> Combining Daniel's comments + indentation alignment:
> det_out_op2_cond = (Fsin * 15 > Fsout * 16 && Fsout < 56000) ||
> (Fsin > 56000 && Fsout < 56000);
>
> > + det_out_op0_cond = (Fsin * 23 < Fsout * 8);
> > +
> > + /*
> > + * unsupported case: Tsout>16.125*Tsin, and Tsout>8.125*Tsin.
>
> Funny thing is that there'd be no point in checking the 16.125, if Tsout is
> bigger than 8.125 times of Tsin, i.e. only one condition:
> Tsout > 8.125 * Tsin
>
> > + * Tsout>16.125*Tsin -> Fsin * 8 > 129 * Fsout
> > + * Tsout>8.125*Tsin -> Fsin * 8 > 65 * Fsout
> > + * Tsout>4.125*Tsin -> Fsin * 8 > 33 * Fsout
> > + * Tsout>1.875*Tsin -> Fsin * 8 > 15 * Fsout
>
> Took me a while to understand what it is saying....
>
> Better to write like this:
> /* Does not support cases: Tsout > 8.125 * Tsin */
> if (Fsin * 8 > 65 * Fsout) {
> pair_err("Does not support %d > 8.125 * %d\n", Fsout, Fsin);
> return -EINVAL;
> }
>
> /* Otherwise, select pre_proc between [0, 2] */
> if (Fsin * 8 > 33 * Fsout)
> > + *pre_proc = 2;
> > + else if (Fsin * 8 > 15 * Fsout) {
> > + if (Fsin > 152000)
> > + *pre_proc = 2;
> > + else
> > + *pre_proc = 1;
> > + } else if (Fsin < 76000)
> > + *pre_proc = 0;
> > + else if (Fsin > 152000)
> > + *pre_proc = 2;
> > + else
> > + *pre_proc = 1;
>
> <== Would look better by moving post_cond calculations here.
>
> > + if (det_out_op2_cond)
> > + *post_proc = 2;
> > + else if (det_out_op0_cond)
> > + *post_proc = 0;
> > + else
> > + *post_proc = 1;
>
> And we could remove this check below:
> > + /* unsupported options */
> > + if (*pre_proc == 4 || *pre_proc == 5)
> > + return -EINVAL;
>
> So basically we are doing:
> 1) Error out unsupported cases
> 2) Select pre_proc
> 3) Calculate conditions for post_proc
> 4) Select post_proc
>
> Thanks
Thanks for reviewing, will send v3.
^ permalink raw reply
* [PATCH V3 0/2] Support more sample rate in asrc
From: S.j. Wang @ 2019-04-17 9:06 UTC (permalink / raw)
To: timur@kernel.org, nicoleotsuka@gmail.com, Xiubo.Lee@gmail.com,
festevam@gmail.com, broonie@kernel.org,
alsa-devel@alsa-project.org
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Support more sample rate in asrc
Shengjiu Wang (2):
ASoC: fsl_asrc: replace the process_option table with function
ASoC: fsl_asrc: Unify the supported input and output rate
Changes in v3
- remove FSL_ASRC_RATES
- refine fsl_asrc_sel_proc according to comments
Changes in v2
- add more comments in code
- add commit "Unify the supported input and output rate"
sound/soc/fsl/fsl_asrc.c | 108 +++++++++++++++++++++++++++++++++--------------
1 file changed, 76 insertions(+), 32 deletions(-)
--
1.9.1
^ permalink raw reply
* [PATCH V3 1/2] ASoC: fsl_asrc: replace the process_option table with function
From: S.j. Wang @ 2019-04-17 9:06 UTC (permalink / raw)
To: timur@kernel.org, nicoleotsuka@gmail.com, Xiubo.Lee@gmail.com,
festevam@gmail.com, broonie@kernel.org,
alsa-devel@alsa-project.org
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <cover.1555491598.git.shengjiu.wang@nxp.com>
When we want to support more sample rate, for example 12kHz/24kHz
we need update the process_option table, if we want to support more
sample rate next time, the table need to be updated again. which
is not flexible.
We got a function fsl_asrc_sel_proc to replace the table, which can
give the pre-processing and post-processing options according to
the sample rate.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
sound/soc/fsl/fsl_asrc.c | 78 +++++++++++++++++++++++++++++++++++-------------
1 file changed, 58 insertions(+), 20 deletions(-)
diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c
index 0b937924d2e4..d34d539d01f2 100644
--- a/sound/soc/fsl/fsl_asrc.c
+++ b/sound/soc/fsl/fsl_asrc.c
@@ -26,24 +26,6 @@
#define pair_dbg(fmt, ...) \
dev_dbg(&asrc_priv->pdev->dev, "Pair %c: " fmt, 'A' + index, ##__VA_ARGS__)
-/* Sample rates are aligned with that defined in pcm.h file */
-static const u8 process_option[][12][2] = {
- /* 8kHz 11.025kHz 16kHz 22.05kHz 32kHz 44.1kHz 48kHz 64kHz 88.2kHz 96kHz 176kHz 192kHz */
- {{0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 5512Hz */
- {{0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 8kHz */
- {{0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 11025Hz */
- {{1, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 16kHz */
- {{1, 2}, {1, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},}, /* 22050Hz */
- {{1, 2}, {2, 1}, {2, 1}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0}, {0, 0},}, /* 32kHz */
- {{2, 2}, {2, 2}, {2, 1}, {2, 1}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0},}, /* 44.1kHz */
- {{2, 2}, {2, 2}, {2, 1}, {2, 1}, {0, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0}, {0, 0},}, /* 48kHz */
- {{2, 2}, {2, 2}, {2, 2}, {2, 1}, {1, 2}, {0, 2}, {0, 2}, {0, 1}, {0, 1}, {0, 1}, {0, 1}, {0, 0},}, /* 64kHz */
- {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1},}, /* 88.2kHz */
- {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1},}, /* 96kHz */
- {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 1}, {2, 1}, {2, 1}, {2, 1}, {2, 1},}, /* 176kHz */
- {{2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 2}, {2, 1}, {2, 1}, {2, 1}, {2, 1}, {2, 1},}, /* 192kHz */
-};
-
/* Corresponding to process_option */
static int supported_input_rate[] = {
5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200,
@@ -80,6 +62,54 @@
static unsigned char *clk_map[2];
/**
+ * Select the pre-processing and post-processing options
+ *
+ * inrate: input sample rate
+ * outrate: output sample rate
+ * pre_proc: return value for pre-processing option
+ * post_proc: return value for post-processing option
+ */
+static int fsl_asrc_sel_proc(int inrate, int outrate, int *pre_proc,
+ int *post_proc)
+{
+ bool post_proc_cond2;
+ bool post_proc_cond0;
+
+ /* Does not support cases: Tsout > 8.125 * Tsin */
+ if (inrate * 8 > 65 * outrate)
+ return -EINVAL;
+
+ /* Otherwise, select pre_proc between [0, 2] */
+ if (inrate * 8 > 33 * outrate)
+ *pre_proc = 2;
+ else if (inrate * 8 > 15 * outrate) {
+ if (inrate > 152000)
+ *pre_proc = 2;
+ else
+ *pre_proc = 1;
+ } else if (inrate < 76000)
+ *pre_proc = 0;
+ else if (inrate > 152000)
+ *pre_proc = 2;
+ else
+ *pre_proc = 1;
+
+ /* Condition for selection of post-processing */
+ post_proc_cond2 = (inrate * 15 > outrate * 16 && outrate < 56000) ||
+ (inrate > 56000 && outrate < 56000);
+ post_proc_cond0 = inrate * 23 < outrate * 8;
+
+ if (post_proc_cond2)
+ *post_proc = 2;
+ else if (post_proc_cond0)
+ *post_proc = 0;
+ else
+ *post_proc = 1;
+
+ return 0;
+}
+
+/**
* Request ASRC pair
*
* It assigns pair by the order of A->C->B because allocation of pair B,
@@ -239,8 +269,10 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
u32 inrate, outrate, indiv, outdiv;
u32 clk_index[2], div[2];
int in, out, channels;
+ int pre_proc, post_proc;
struct clk *clk;
bool ideal;
+ int ret;
if (!config) {
pair_err("invalid pair config\n");
@@ -289,6 +321,12 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
return -EINVAL;
}
+ ret = fsl_asrc_sel_proc(inrate, outrate, &pre_proc, &post_proc);
+ if (ret) {
+ pair_err("No supported pre-processing options\n");
+ return ret;
+ }
+
/* Validate input and output clock sources */
clk_index[IN] = clk_map[IN][config->inclk];
clk_index[OUT] = clk_map[OUT][config->outclk];
@@ -380,8 +418,8 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
/* Apply configurations for pre- and post-processing */
regmap_update_bits(asrc_priv->regmap, REG_ASRCFG,
ASRCFG_PREMODi_MASK(index) | ASRCFG_POSTMODi_MASK(index),
- ASRCFG_PREMOD(index, process_option[in][out][0]) |
- ASRCFG_POSTMOD(index, process_option[in][out][1]));
+ ASRCFG_PREMOD(index, pre_proc) |
+ ASRCFG_POSTMOD(index, post_proc));
return fsl_asrc_set_ideal_ratio(pair, inrate, outrate);
}
--
1.9.1
^ permalink raw reply related
* [PATCH V3 2/2] ASoC: fsl_asrc: Unify the supported input and output rate
From: S.j. Wang @ 2019-04-17 9:06 UTC (permalink / raw)
To: timur@kernel.org, nicoleotsuka@gmail.com, Xiubo.Lee@gmail.com,
festevam@gmail.com, broonie@kernel.org,
alsa-devel@alsa-project.org
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
In-Reply-To: <cover.1555491598.git.shengjiu.wang@nxp.com>
Unify the supported input and output rate, add the
12kHz/24kHz/128kHz to the support list
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
sound/soc/fsl/fsl_asrc.c | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c
index d34d539d01f2..b0d19b787bb8 100644
--- a/sound/soc/fsl/fsl_asrc.c
+++ b/sound/soc/fsl/fsl_asrc.c
@@ -27,13 +27,14 @@
dev_dbg(&asrc_priv->pdev->dev, "Pair %c: " fmt, 'A' + index, ##__VA_ARGS__)
/* Corresponding to process_option */
-static int supported_input_rate[] = {
- 5512, 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200,
- 96000, 176400, 192000,
+static unsigned int supported_asrc_rate[] = {
+ 5512, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000,
+ 64000, 88200, 96000, 128000, 176400, 192000,
};
-static int supported_asrc_rate[] = {
- 8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000, 88200, 96000, 176400, 192000,
+static struct snd_pcm_hw_constraint_list fsl_asrc_rate_constraints = {
+ .count = ARRAY_SIZE(supported_asrc_rate),
+ .list = supported_asrc_rate,
};
/**
@@ -296,11 +297,11 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
ideal = config->inclk == INCLK_NONE;
/* Validate input and output sample rates */
- for (in = 0; in < ARRAY_SIZE(supported_input_rate); in++)
- if (inrate == supported_input_rate[in])
+ for (in = 0; in < ARRAY_SIZE(supported_asrc_rate); in++)
+ if (inrate == supported_asrc_rate[in])
break;
- if (in == ARRAY_SIZE(supported_input_rate)) {
+ if (in == ARRAY_SIZE(supported_asrc_rate)) {
pair_err("unsupported input sample rate: %dHz\n", inrate);
return -EINVAL;
}
@@ -493,7 +494,9 @@ static int fsl_asrc_dai_startup(struct snd_pcm_substream *substream,
snd_pcm_hw_constraint_step(substream->runtime, 0,
SNDRV_PCM_HW_PARAM_CHANNELS, 2);
- return 0;
+
+ return snd_pcm_hw_constraint_list(substream->runtime, 0,
+ SNDRV_PCM_HW_PARAM_RATE, &fsl_asrc_rate_constraints);
}
static int fsl_asrc_dai_hw_params(struct snd_pcm_substream *substream,
@@ -606,7 +609,6 @@ static int fsl_asrc_dai_probe(struct snd_soc_dai *dai)
return 0;
}
-#define FSL_ASRC_RATES SNDRV_PCM_RATE_8000_192000
#define FSL_ASRC_FORMATS (SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S20_3LE)
@@ -617,14 +619,18 @@ static int fsl_asrc_dai_probe(struct snd_soc_dai *dai)
.stream_name = "ASRC-Playback",
.channels_min = 1,
.channels_max = 10,
- .rates = FSL_ASRC_RATES,
+ .rate_min = 5512,
+ .rate_max = 192000,
+ .rates = SNDRV_PCM_RATE_KNOT,
.formats = FSL_ASRC_FORMATS,
},
.capture = {
.stream_name = "ASRC-Capture",
.channels_min = 1,
.channels_max = 10,
- .rates = FSL_ASRC_RATES,
+ .rate_min = 5512,
+ .rate_max = 192000,
+ .rates = SNDRV_PCM_RATE_KNOT,
.formats = FSL_ASRC_FORMATS,
},
.ops = &fsl_asrc_dai_ops,
--
1.9.1
^ permalink raw reply related
* Re: [PATCH v3 00/26] compat_ioctl: cleanups
From: Arnd Bergmann @ 2019-04-17 9:26 UTC (permalink / raw)
To: dgilbert
Cc: linux-nvme, linux-iio, linux-remoteproc,
Linux Fbdev development list, dri-devel, Platform Driver, IDE-ML,
linux-mtd, sparclinux, linux1394-devel, driverdevel, linux-s390,
linux-scsi, Bluez mailing list, y2038 Mailman List, qat-linux,
amd-gfx, open list:HID CORE LAYER, Marcel Holtmann,
Linux Media Mailing List, linux-rtc,
ALSA Development Mailing List, James E.J. Bottomley,
Alexander Viro, ceph-devel, Linux ARM, Karsten Keil,
Martin K. Petersen, Greg Kroah-Hartman, USB list, linux-wireless,
Linux Kernel Mailing List, linux-rdma,
open list:HARDWARE RANDOM NUMBER GENERATOR CORE, Networking,
Linux FS-devel Mailing List, linux-integrity, linuxppc-dev,
David S. Miller, linux-btrfs, linux-ppp
In-Reply-To: <c379ed8d-1f33-e391-a1b5-810da77605f2@interlog.com>
On Wed, Apr 17, 2019 at 12:33 AM Douglas Gilbert <dgilbert@interlog.com> wrote:
>
> On 2019-04-16 4:19 p.m., Arnd Bergmann wrote:
> > Hi Al,
> >
> > It took me way longer than I had hoped to revisit this series, see
> > https://lore.kernel.org/lkml/20180912150142.157913-1-arnd@arndb.de/
> > for the previously posted version.
> >
> > I've come to the point where all conversion handlers and most
> > COMPATIBLE_IOCTL() entries are gone from this file, but for
> > now, this series only has the parts that have either been reviewed
> > previously, or that are simple enough to include.
> >
> > The main missing piece is the SG_IO/SG_GET_REQUEST_TABLE conversion.
> > I'll post the patches I made for that later, as they need more
> > testing and review from the scsi maintainers.
>
> Perhaps you could look at the document in this url:
> http://sg.danny.cz/sg/sg_v40.html
>
> It is work-in-progress to modernize the SCSI generic driver. It
> extends ioctl(sg_fd, SG_IO, &pt_obj) to additionally accept the sg v4
> interface as defined in include/uapi/linux/bsg.h . Currently only the
> bsg driver uses the sg v4 interface. Since struct sg_io_v4 is all
> explicitly sized integers, I'm guessing it is immune "compat" problems.
> [I can see no reference to bsg nor struct sg_io_v4 in the current
> fs/compat_ioctl.c file.]
Ok, I've taken a brief look at your series now. Unfortunately it clashes
quite hard with my series, but it's probably for the better to have your
stuff get merged first.
A few (unsorted) comments from going through your patches:
- the added ioctls are all compatible when using the v4 structures
and mostly don't need handlers for compat mode, but they need to be
called from .compat_ioctl to actually be usable in compat mode.
With my patches you get that.
- One exception for the v4 layout is the use of iovec pointers, as
'struct iovec' is incompatible. We should probably merge the
generic compat_import_iovec() into import_iovec() with a
'in_compat_syscall()' check, which would be helpful in general.
bsg.c does not iovec, so it is not affected by this at the moment,
maybe it would be better to stay compatible with that and also
not support them in sg.c?
- Is there a need for the new sg_ioctl_iosubmit/sg_ioctl_ioreceive
to support the v3 structures? Those are /not/ compatible, so
you need extra code to handle the v3-compat layout as well.
Supporting only v4 would simplify this.
- the lack of changeset descriptions is a bit irritating and makes
it much harder to understand what you are doing.
- try to keep patches that move code around separate from those
that change it in any other way, for better reviewing.
- in "sg: preparation for request sharing", you seem to inadvertently
change the size of "struct sg_extended_info", making it 4 bytes
longer by adding two members.
- You should never use IS_ERR_OR_NULL() in normal code, that
is just a sign of a bad API. Make each function have consistent
error behavior.
- The "#if 0 /* temporary to shorten big patch */" trick breaks
bisection, that is probably worse than the larger patch.
- The split access_ok()/__copy_from_user() has fallen out of
favor because it has caused too many bugs in the past, just
use the combined copy_from_user() instead.
- ktime_to_ns(ktime_get_with_offset(TK_OFFS_BOOT)) followed
by a 64-bit division won't work on 32-bit machines, use
ktime_get_boottime_ts64() instead.
> Other additions described in the that document are these new ioctls:
> - SG_IOSUBMIT ultimately to replace write(sg_fd, ...)
> - SG_IORECEIVE to replace read(sg_fd, ...)
> - SG_IOABORT abort SCSI cmd in progress; new functionality
> - SG_SET_GET_EXTENDED has associated struct sg_extended_info
>
> The first three take a pointer to a struct sg_io_hdr (v3 interface) or
> a struct sg_io_v4 object. Both objects start with a 32 bit integer:
> 'S' identifies the v3 interface while 'Q' identifies the v4 interface.
I think the magic character was a mistake in the original design,
just like versioned interfaces in general. If you are extending an
interface in an incompatible way, the normal way would be to
have separate command codes, like SG_IORECEIVE_V3
and SG_IORECEIVE_V4, if you absolutely have to maintain
compatiblity with the old interface (which I think you don't in
case of SG_IORECEIVE).
For SG_IO, I can see why you want to support both the v3
and v4 structures plus the compat-v3 version, but I'd try to keep
them as separate as possible, and do something like
static int sg_ctl_sg_io(struct file *filp, struct sg_device *sdp,
struct sg_fd *sfp,
void __user *p)
{
int ret;
ret = sg_io_v4(filp, sdp, sfp, (struct sg_io_v4 __user *)p);
if (ret != -ENOIOCTLCMD || !S_ENABLED(CONFIG_SG_IO_V3))
return ret;
if (in_compat_syscall())
ret = sg_io_compat_(filp, sdp, sfp, (struct
compat_sg_io_hdr __user *)p);
else
ret = sg_io_v3(filp, sdp, sfp, (struct sg_io_hdr __user *)p);
}
In my patch series, I combined the latter two cases and used a shared
get_sg_io_hdr()/put_sg_io_hdr() helper as well as a wrapper for the iovec
issue.
> The SG_SET_GET_EXTENDED ioctl takes a pointer to a struct
> sg_extended_info object which contains explicitly sized integers so it
> may also be immune from "compat" problems. The ioctls section (13) of
> that document referenced above has a table showing how many "sets and
> gets" are hiding in the SG_SET_GET_EXTENDED ioctl.
Agreed, SG_SET_GET_EXTENDED looks fine to me from a compat
perspective.
I've uploaded my patches to
git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground.git
compat-ioctl-v3
This contains both the series I posted here, and my scsi ioctl rework.
Maybe you can take the bits you need from that to handle the v3-compat
structures and integrate it into your series?
Arnd
^ permalink raw reply
* [PATCH v3 11/21] docs: hwmon: ibmpowernv: convert to ReST format
From: Mauro Carvalho Chehab @ 2019-04-17 9:46 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: linux-hwmon, Jean Delvare, Jonathan Corbet, linux-kernel,
Mauro Carvalho Chehab, Paul Mackerras, Mauro Carvalho Chehab,
linuxppc-dev, Guenter Roeck
In-Reply-To: <cover.1555494108.git.mchehab+samsung@kernel.org>
Convert ibmpowernv to ReST format, in order to allow it to
be parsed by Sphinx.
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
---
Documentation/hwmon/ibmpowernv | 31 +++++++++++++++++++------------
1 file changed, 19 insertions(+), 12 deletions(-)
diff --git a/Documentation/hwmon/ibmpowernv b/Documentation/hwmon/ibmpowernv
index 56468258711f..5d642bc3dec0 100644
--- a/Documentation/hwmon/ibmpowernv
+++ b/Documentation/hwmon/ibmpowernv
@@ -2,6 +2,7 @@ Kernel Driver IBMPOWERNV
========================
Supported systems:
+
* Any recent IBM P servers based on POWERNV platform
Author: Neelesh Gupta
@@ -29,10 +30,11 @@ CONFIG_SENSORS_IBMPOWERNV. It can also be built as module 'ibmpowernv'.
Sysfs attributes
----------------
+======================= =======================================================
fanX_input Measured RPM value.
fanX_min Threshold RPM for alert generation.
-fanX_fault 0: No fail condition
- 1: Failing fan
+fanX_fault - 0: No fail condition
+ - 1: Failing fan
tempX_input Measured ambient temperature.
tempX_max Threshold ambient temperature for alert generation.
@@ -42,20 +44,22 @@ tempX_enable Enable/disable all temperature sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its temperature sensors.
- 1: Enable
- 0: Disable
+
+ - 1: Enable
+ - 0: Disable
inX_input Measured power supply voltage (millivolt)
-inX_fault 0: No fail condition.
- 1: Failing power supply.
+inX_fault - 0: No fail condition.
+ - 1: Failing power supply.
inX_highest Historical maximum voltage
inX_lowest Historical minimum voltage
inX_enable Enable/disable all voltage sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its voltage sensors.
- 1: Enable
- 0: Disable
+
+ - 1: Enable
+ - 0: Disable
powerX_input Power consumption (microWatt)
powerX_input_highest Historical maximum power
@@ -64,8 +68,9 @@ powerX_enable Enable/disable all power sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its power sensors.
- 1: Enable
- 0: Disable
+
+ - 1: Enable
+ - 0: Disable
currX_input Measured current (milliampere)
currX_highest Historical maximum current
@@ -74,7 +79,9 @@ currX_enable Enable/disable all current sensors belonging to the
sub-group. In POWER9, this attribute corresponds to
each OCC. Using this attribute each OCC can be asked to
disable/enable all of its current sensors.
- 1: Enable
- 0: Disable
+
+ - 1: Enable
+ - 0: Disable
energyX_input Cumulative energy (microJoule)
+======================= =======================================================
--
2.20.1
^ permalink raw reply related
* [PATCH v3 21/21] docs: hwmon: Add an index file and rename docs to *.rst
From: Mauro Carvalho Chehab @ 2019-04-17 9:46 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mark Rutland, Dirk Eibach, linux-aspeed, devicetree,
Clemens Ladisch, Kamil Debski, Marc Hulsman, Huang Rui,
Paul Mackerras, Mauro Carvalho Chehab, Jim Cromie,
Lorenzo Pieralisi, Jonathan Corbet, Joel Stanley, Guenter Roeck,
Steve Glendinning, Fenghua Yu, Jean Delvare,
Bartlomiej Zolnierkiewicz, Liviu Dudau, Mauro Carvalho Chehab,
Hans de Goede, Rob Herring, Rudolf Marek, linux-arm-kernel,
linux-hwmon, Support Opensource, George Joseph, Andreas Werner,
Andrew Jeffery, patches, linux-kernel, Juerg Haefliger,
Sudeep Holla, linuxppc-dev
In-Reply-To: <cover.1555494108.git.mchehab+samsung@kernel.org>
Now that all files were converted to ReST format, rename them
and add an index.
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
---
.../devicetree/bindings/hwmon/g762.txt | 2 +-
Documentation/hwmon/{ab8500 => ab8500.rst} | 2 +-
...guru-datasheet => abituguru-datasheet.rst} | 0
.../hwmon/{abituguru => abituguru.rst} | 0
.../hwmon/{abituguru3 => abituguru3.rst} | 0
Documentation/hwmon/{abx500 => abx500.rst} | 0
...{acpi_power_meter => acpi_power_meter.rst} | 2 +-
Documentation/hwmon/{ad7314 => ad7314.rst} | 0
.../hwmon/{adc128d818 => adc128d818.rst} | 0
Documentation/hwmon/{adm1021 => adm1021.rst} | 0
Documentation/hwmon/{adm1025 => adm1025.rst} | 0
Documentation/hwmon/{adm1026 => adm1026.rst} | 0
Documentation/hwmon/{adm1031 => adm1031.rst} | 0
Documentation/hwmon/{adm1275 => adm1275.rst} | 4 +-
Documentation/hwmon/{adm9240 => adm9240.rst} | 0
Documentation/hwmon/{ads1015 => ads1015.rst} | 0
Documentation/hwmon/{ads7828 => ads7828.rst} | 0
Documentation/hwmon/{adt7410 => adt7410.rst} | 0
Documentation/hwmon/{adt7411 => adt7411.rst} | 0
Documentation/hwmon/{adt7462 => adt7462.rst} | 1 -
Documentation/hwmon/{adt7470 => adt7470.rst} | 0
Documentation/hwmon/{adt7475 => adt7475.rst} | 0
Documentation/hwmon/{amc6821 => amc6821.rst} | 1 -
Documentation/hwmon/{asb100 => asb100.rst} | 1 -
Documentation/hwmon/{asc7621 => asc7621.rst} | 0
...{aspeed-pwm-tacho => aspeed-pwm-tacho.rst} | 0
.../hwmon/{coretemp => coretemp.rst} | 0
Documentation/hwmon/{da9052 => da9052.rst} | 0
Documentation/hwmon/{da9055 => da9055.rst} | 0
Documentation/hwmon/{dme1737 => dme1737.rst} | 0
Documentation/hwmon/{ds1621 => ds1621.rst} | 0
Documentation/hwmon/{ds620 => ds620.rst} | 0
Documentation/hwmon/{emc1403 => emc1403.rst} | 0
Documentation/hwmon/{emc2103 => emc2103.rst} | 0
.../hwmon/{emc6w201 => emc6w201.rst} | 0
Documentation/hwmon/{f71805f => f71805f.rst} | 0
.../hwmon/{f71882fg => f71882fg.rst} | 0
.../hwmon/{fam15h_power => fam15h_power.rst} | 0
.../hwmon/{ftsteutates => ftsteutates.rst} | 0
Documentation/hwmon/{g760a => g760a.rst} | 0
Documentation/hwmon/{g762 => g762.rst} | 2 +-
Documentation/hwmon/{gl518sm => gl518sm.rst} | 0
Documentation/hwmon/{hih6130 => hih6130.rst} | 0
...on-kernel-api.txt => hwmon-kernel-api.rst} | 4 +-
.../hwmon/{ibm-cffps => ibm-cffps.rst} | 0
Documentation/hwmon/{ibmaem => ibmaem.rst} | 0
.../hwmon/{ibmpowernv => ibmpowernv.rst} | 0
Documentation/hwmon/{ina209 => ina209.rst} | 0
Documentation/hwmon/{ina2xx => ina2xx.rst} | 2 +-
Documentation/hwmon/{ina3221 => ina3221.rst} | 0
Documentation/hwmon/index.rst | 179 ++++++++++++++++++
Documentation/hwmon/{ir35221 => ir35221.rst} | 0
Documentation/hwmon/{it87 => it87.rst} | 0
Documentation/hwmon/{jc42 => jc42.rst} | 0
Documentation/hwmon/{k10temp => k10temp.rst} | 0
Documentation/hwmon/{k8temp => k8temp.rst} | 0
.../hwmon/{lineage-pem => lineage-pem.rst} | 0
Documentation/hwmon/{lm25066 => lm25066.rst} | 2 +-
Documentation/hwmon/{lm63 => lm63.rst} | 0
Documentation/hwmon/{lm70 => lm70.rst} | 0
Documentation/hwmon/{lm73 => lm73.rst} | 0
Documentation/hwmon/{lm75 => lm75.rst} | 0
Documentation/hwmon/{lm77 => lm77.rst} | 0
Documentation/hwmon/{lm78 => lm78.rst} | 0
Documentation/hwmon/{lm80 => lm80.rst} | 0
Documentation/hwmon/{lm83 => lm83.rst} | 0
Documentation/hwmon/{lm85 => lm85.rst} | 0
Documentation/hwmon/{lm87 => lm87.rst} | 0
Documentation/hwmon/{lm90 => lm90.rst} | 0
Documentation/hwmon/{lm92 => lm92.rst} | 0
Documentation/hwmon/{lm93 => lm93.rst} | 0
Documentation/hwmon/{lm95234 => lm95234.rst} | 0
Documentation/hwmon/{lm95245 => lm95245.rst} | 0
Documentation/hwmon/{ltc2945 => ltc2945.rst} | 0
Documentation/hwmon/{ltc2978 => ltc2978.rst} | 0
Documentation/hwmon/{ltc2990 => ltc2990.rst} | 0
Documentation/hwmon/{ltc3815 => ltc3815.rst} | 0
Documentation/hwmon/{ltc4151 => ltc4151.rst} | 0
Documentation/hwmon/{ltc4215 => ltc4215.rst} | 0
Documentation/hwmon/{ltc4245 => ltc4245.rst} | 0
Documentation/hwmon/{ltc4260 => ltc4260.rst} | 0
Documentation/hwmon/{ltc4261 => ltc4261.rst} | 0
.../hwmon/{max16064 => max16064.rst} | 2 +-
.../hwmon/{max16065 => max16065.rst} | 0
Documentation/hwmon/{max1619 => max1619.rst} | 1 -
Documentation/hwmon/{max1668 => max1668.rst} | 0
Documentation/hwmon/{max197 => max197.rst} | 0
.../hwmon/{max20751 => max20751.rst} | 2 +-
.../hwmon/{max31722 => max31722.rst} | 0
.../hwmon/{max31785 => max31785.rst} | 0
.../hwmon/{max31790 => max31790.rst} | 0
.../hwmon/{max34440 => max34440.rst} | 2 +-
Documentation/hwmon/{max6639 => max6639.rst} | 0
Documentation/hwmon/{max6642 => max6642.rst} | 0
Documentation/hwmon/{max6650 => max6650.rst} | 1 -
Documentation/hwmon/{max6697 => max6697.rst} | 0
Documentation/hwmon/{max8688 => max8688.rst} | 2 +-
.../hwmon/{mc13783-adc => mc13783-adc.rst} | 0
Documentation/hwmon/{mcp3021 => mcp3021.rst} | 0
.../hwmon/{menf21bmc => menf21bmc.rst} | 0
.../hwmon/{mlxreg-fan => mlxreg-fan.rst} | 0
Documentation/hwmon/{nct6683 => nct6683.rst} | 0
Documentation/hwmon/{nct6775 => nct6775.rst} | 0
Documentation/hwmon/{nct7802 => nct7802.rst} | 0
Documentation/hwmon/{nct7904 => nct7904.rst} | 0
.../{npcm750-pwm-fan => npcm750-pwm-fan.rst} | 0
Documentation/hwmon/{nsa320 => nsa320.rst} | 0
.../{ntc_thermistor => ntc_thermistor.rst} | 0
Documentation/hwmon/{occ => occ.rst} | 0
Documentation/hwmon/{pc87360 => pc87360.rst} | 0
Documentation/hwmon/{pc87427 => pc87427.rst} | 0
Documentation/hwmon/{pcf8591 => pcf8591.rst} | 0
.../hwmon/{pmbus-core => pmbus-core.rst} | 0
Documentation/hwmon/{pmbus => pmbus.rst} | 0
.../hwmon/{powr1220 => powr1220.rst} | 0
Documentation/hwmon/{pwm-fan => pwm-fan.rst} | 0
...aspberrypi-hwmon => raspberrypi-hwmon.rst} | 0
Documentation/hwmon/{sch5627 => sch5627.rst} | 0
Documentation/hwmon/{sch5636 => sch5636.rst} | 0
.../hwmon/{scpi-hwmon => scpi-hwmon.rst} | 0
Documentation/hwmon/{sht15 => sht15.rst} | 0
Documentation/hwmon/{sht21 => sht21.rst} | 0
Documentation/hwmon/{sht3x => sht3x.rst} | 0
Documentation/hwmon/{shtc1 => shtc1.rst} | 0
Documentation/hwmon/{sis5595 => sis5595.rst} | 1 -
Documentation/hwmon/{smm665 => smm665.rst} | 0
.../hwmon/{smsc47b397 => smsc47b397.rst} | 0
.../hwmon/{smsc47m1 => smsc47m1.rst} | 0
.../hwmon/{smsc47m192 => smsc47m192.rst} | 0
...mitting-patches => submitting-patches.rst} | 6 +-
.../{sysfs-interface => sysfs-interface.rst} | 0
Documentation/hwmon/{tc654 => tc654.rst} | 0
Documentation/hwmon/{tc74 => tc74.rst} | 0
Documentation/hwmon/{thmc50 => thmc50.rst} | 1 -
Documentation/hwmon/{tmp102 => tmp102.rst} | 2 +-
Documentation/hwmon/{tmp103 => tmp103.rst} | 2 +-
Documentation/hwmon/{tmp108 => tmp108.rst} | 2 +-
Documentation/hwmon/{tmp401 => tmp401.rst} | 2 +-
Documentation/hwmon/{tmp421 => tmp421.rst} | 0
.../hwmon/{tps40422 => tps40422.rst} | 2 +-
...4030-madc-hwmon => twl4030-madc-hwmon.rst} | 0
Documentation/hwmon/{ucd9000 => ucd9000.rst} | 4 +-
Documentation/hwmon/{ucd9200 => ucd9200.rst} | 4 +-
.../{userspace-tools => userspace-tools.rst} | 0
.../hwmon/{vexpress => vexpress.rst} | 0
Documentation/hwmon/{via686a => via686a.rst} | 0
Documentation/hwmon/{vt1211 => vt1211.rst} | 0
.../hwmon/{w83627ehf => w83627ehf.rst} | 0
.../hwmon/{w83627hf => w83627hf.rst} | 0
Documentation/hwmon/{w83773g => w83773g.rst} | 0
Documentation/hwmon/{w83781d => w83781d.rst} | 0
Documentation/hwmon/{w83791d => w83791d.rst} | 2 +-
Documentation/hwmon/{w83792d => w83792d.rst} | 0
Documentation/hwmon/{w83793 => w83793.rst} | 0
Documentation/hwmon/{w83795 => w83795.rst} | 0
.../hwmon/{w83l785ts => w83l785ts.rst} | 0
.../hwmon/{w83l786ng => w83l786ng.rst} | 0
Documentation/hwmon/{wm831x => wm831x.rst} | 0
Documentation/hwmon/{wm8350 => wm8350.rst} | 0
.../hwmon/{xgene-hwmon => xgene-hwmon.rst} | 0
Documentation/hwmon/{zl6100 => zl6100.rst} | 2 +-
Documentation/index.rst | 1 +
Documentation/thermal/sysfs-api.txt | 2 +-
MAINTAINERS | 108 +++++------
drivers/hwmon/Kconfig | 8 +-
drivers/hwmon/ads7828.c | 2 +-
drivers/hwmon/max197.c | 2 +-
drivers/hwmon/sht15.c | 2 +-
include/linux/platform_data/ads7828.h | 2 +-
include/linux/platform_data/ds620.h | 2 +-
include/linux/platform_data/ina2xx.h | 2 +-
include/linux/platform_data/max197.h | 2 +-
include/linux/platform_data/ntc_thermistor.h | 2 +-
173 files changed, 275 insertions(+), 102 deletions(-)
rename Documentation/hwmon/{ab8500 => ab8500.rst} (86%)
rename Documentation/hwmon/{abituguru-datasheet => abituguru-datasheet.rst} (100%)
rename Documentation/hwmon/{abituguru => abituguru.rst} (100%)
rename Documentation/hwmon/{abituguru3 => abituguru3.rst} (100%)
rename Documentation/hwmon/{abx500 => abx500.rst} (100%)
rename Documentation/hwmon/{acpi_power_meter => acpi_power_meter.rst} (97%)
rename Documentation/hwmon/{ad7314 => ad7314.rst} (100%)
rename Documentation/hwmon/{adc128d818 => adc128d818.rst} (100%)
rename Documentation/hwmon/{adm1021 => adm1021.rst} (100%)
rename Documentation/hwmon/{adm1025 => adm1025.rst} (100%)
rename Documentation/hwmon/{adm1026 => adm1026.rst} (100%)
rename Documentation/hwmon/{adm1031 => adm1031.rst} (100%)
rename Documentation/hwmon/{adm1275 => adm1275.rst} (97%)
rename Documentation/hwmon/{adm9240 => adm9240.rst} (100%)
rename Documentation/hwmon/{ads1015 => ads1015.rst} (100%)
rename Documentation/hwmon/{ads7828 => ads7828.rst} (100%)
rename Documentation/hwmon/{adt7410 => adt7410.rst} (100%)
rename Documentation/hwmon/{adt7411 => adt7411.rst} (100%)
rename Documentation/hwmon/{adt7462 => adt7462.rst} (99%)
rename Documentation/hwmon/{adt7470 => adt7470.rst} (100%)
rename Documentation/hwmon/{adt7475 => adt7475.rst} (100%)
rename Documentation/hwmon/{amc6821 => amc6821.rst} (99%)
rename Documentation/hwmon/{asb100 => asb100.rst} (99%)
rename Documentation/hwmon/{asc7621 => asc7621.rst} (100%)
rename Documentation/hwmon/{aspeed-pwm-tacho => aspeed-pwm-tacho.rst} (100%)
rename Documentation/hwmon/{coretemp => coretemp.rst} (100%)
rename Documentation/hwmon/{da9052 => da9052.rst} (100%)
rename Documentation/hwmon/{da9055 => da9055.rst} (100%)
rename Documentation/hwmon/{dme1737 => dme1737.rst} (100%)
rename Documentation/hwmon/{ds1621 => ds1621.rst} (100%)
rename Documentation/hwmon/{ds620 => ds620.rst} (100%)
rename Documentation/hwmon/{emc1403 => emc1403.rst} (100%)
rename Documentation/hwmon/{emc2103 => emc2103.rst} (100%)
rename Documentation/hwmon/{emc6w201 => emc6w201.rst} (100%)
rename Documentation/hwmon/{f71805f => f71805f.rst} (100%)
rename Documentation/hwmon/{f71882fg => f71882fg.rst} (100%)
rename Documentation/hwmon/{fam15h_power => fam15h_power.rst} (100%)
rename Documentation/hwmon/{ftsteutates => ftsteutates.rst} (100%)
rename Documentation/hwmon/{g760a => g760a.rst} (100%)
rename Documentation/hwmon/{g762 => g762.rst} (97%)
rename Documentation/hwmon/{gl518sm => gl518sm.rst} (100%)
rename Documentation/hwmon/{hih6130 => hih6130.rst} (100%)
rename Documentation/hwmon/{hwmon-kernel-api.txt => hwmon-kernel-api.rst} (99%)
rename Documentation/hwmon/{ibm-cffps => ibm-cffps.rst} (100%)
rename Documentation/hwmon/{ibmaem => ibmaem.rst} (100%)
rename Documentation/hwmon/{ibmpowernv => ibmpowernv.rst} (100%)
rename Documentation/hwmon/{ina209 => ina209.rst} (100%)
rename Documentation/hwmon/{ina2xx => ina2xx.rst} (97%)
rename Documentation/hwmon/{ina3221 => ina3221.rst} (100%)
create mode 100644 Documentation/hwmon/index.rst
rename Documentation/hwmon/{ir35221 => ir35221.rst} (100%)
rename Documentation/hwmon/{it87 => it87.rst} (100%)
rename Documentation/hwmon/{jc42 => jc42.rst} (100%)
rename Documentation/hwmon/{k10temp => k10temp.rst} (100%)
rename Documentation/hwmon/{k8temp => k8temp.rst} (100%)
rename Documentation/hwmon/{lineage-pem => lineage-pem.rst} (100%)
rename Documentation/hwmon/{lm25066 => lm25066.rst} (97%)
rename Documentation/hwmon/{lm63 => lm63.rst} (100%)
rename Documentation/hwmon/{lm70 => lm70.rst} (100%)
rename Documentation/hwmon/{lm73 => lm73.rst} (100%)
rename Documentation/hwmon/{lm75 => lm75.rst} (100%)
rename Documentation/hwmon/{lm77 => lm77.rst} (100%)
rename Documentation/hwmon/{lm78 => lm78.rst} (100%)
rename Documentation/hwmon/{lm80 => lm80.rst} (100%)
rename Documentation/hwmon/{lm83 => lm83.rst} (100%)
rename Documentation/hwmon/{lm85 => lm85.rst} (100%)
rename Documentation/hwmon/{lm87 => lm87.rst} (100%)
rename Documentation/hwmon/{lm90 => lm90.rst} (100%)
rename Documentation/hwmon/{lm92 => lm92.rst} (100%)
rename Documentation/hwmon/{lm93 => lm93.rst} (100%)
rename Documentation/hwmon/{lm95234 => lm95234.rst} (100%)
rename Documentation/hwmon/{lm95245 => lm95245.rst} (100%)
rename Documentation/hwmon/{ltc2945 => ltc2945.rst} (100%)
rename Documentation/hwmon/{ltc2978 => ltc2978.rst} (100%)
rename Documentation/hwmon/{ltc2990 => ltc2990.rst} (100%)
rename Documentation/hwmon/{ltc3815 => ltc3815.rst} (100%)
rename Documentation/hwmon/{ltc4151 => ltc4151.rst} (100%)
rename Documentation/hwmon/{ltc4215 => ltc4215.rst} (100%)
rename Documentation/hwmon/{ltc4245 => ltc4245.rst} (100%)
rename Documentation/hwmon/{ltc4260 => ltc4260.rst} (100%)
rename Documentation/hwmon/{ltc4261 => ltc4261.rst} (100%)
rename Documentation/hwmon/{max16064 => max16064.rst} (96%)
rename Documentation/hwmon/{max16065 => max16065.rst} (100%)
rename Documentation/hwmon/{max1619 => max1619.rst} (99%)
rename Documentation/hwmon/{max1668 => max1668.rst} (100%)
rename Documentation/hwmon/{max197 => max197.rst} (100%)
rename Documentation/hwmon/{max20751 => max20751.rst} (96%)
rename Documentation/hwmon/{max31722 => max31722.rst} (100%)
rename Documentation/hwmon/{max31785 => max31785.rst} (100%)
rename Documentation/hwmon/{max31790 => max31790.rst} (100%)
rename Documentation/hwmon/{max34440 => max34440.rst} (98%)
rename Documentation/hwmon/{max6639 => max6639.rst} (100%)
rename Documentation/hwmon/{max6642 => max6642.rst} (100%)
rename Documentation/hwmon/{max6650 => max6650.rst} (99%)
rename Documentation/hwmon/{max6697 => max6697.rst} (100%)
rename Documentation/hwmon/{max8688 => max8688.rst} (97%)
rename Documentation/hwmon/{mc13783-adc => mc13783-adc.rst} (100%)
rename Documentation/hwmon/{mcp3021 => mcp3021.rst} (100%)
rename Documentation/hwmon/{menf21bmc => menf21bmc.rst} (100%)
rename Documentation/hwmon/{mlxreg-fan => mlxreg-fan.rst} (100%)
rename Documentation/hwmon/{nct6683 => nct6683.rst} (100%)
rename Documentation/hwmon/{nct6775 => nct6775.rst} (100%)
rename Documentation/hwmon/{nct7802 => nct7802.rst} (100%)
rename Documentation/hwmon/{nct7904 => nct7904.rst} (100%)
rename Documentation/hwmon/{npcm750-pwm-fan => npcm750-pwm-fan.rst} (100%)
rename Documentation/hwmon/{nsa320 => nsa320.rst} (100%)
rename Documentation/hwmon/{ntc_thermistor => ntc_thermistor.rst} (100%)
rename Documentation/hwmon/{occ => occ.rst} (100%)
rename Documentation/hwmon/{pc87360 => pc87360.rst} (100%)
rename Documentation/hwmon/{pc87427 => pc87427.rst} (100%)
rename Documentation/hwmon/{pcf8591 => pcf8591.rst} (100%)
rename Documentation/hwmon/{pmbus-core => pmbus-core.rst} (100%)
rename Documentation/hwmon/{pmbus => pmbus.rst} (100%)
rename Documentation/hwmon/{powr1220 => powr1220.rst} (100%)
rename Documentation/hwmon/{pwm-fan => pwm-fan.rst} (100%)
rename Documentation/hwmon/{raspberrypi-hwmon => raspberrypi-hwmon.rst} (100%)
rename Documentation/hwmon/{sch5627 => sch5627.rst} (100%)
rename Documentation/hwmon/{sch5636 => sch5636.rst} (100%)
rename Documentation/hwmon/{scpi-hwmon => scpi-hwmon.rst} (100%)
rename Documentation/hwmon/{sht15 => sht15.rst} (100%)
rename Documentation/hwmon/{sht21 => sht21.rst} (100%)
rename Documentation/hwmon/{sht3x => sht3x.rst} (100%)
rename Documentation/hwmon/{shtc1 => shtc1.rst} (100%)
rename Documentation/hwmon/{sis5595 => sis5595.rst} (99%)
rename Documentation/hwmon/{smm665 => smm665.rst} (100%)
rename Documentation/hwmon/{smsc47b397 => smsc47b397.rst} (100%)
rename Documentation/hwmon/{smsc47m1 => smsc47m1.rst} (100%)
rename Documentation/hwmon/{smsc47m192 => smsc47m192.rst} (100%)
rename Documentation/hwmon/{submitting-patches => submitting-patches.rst} (98%)
rename Documentation/hwmon/{sysfs-interface => sysfs-interface.rst} (100%)
rename Documentation/hwmon/{tc654 => tc654.rst} (100%)
rename Documentation/hwmon/{tc74 => tc74.rst} (100%)
rename Documentation/hwmon/{thmc50 => thmc50.rst} (99%)
rename Documentation/hwmon/{tmp102 => tmp102.rst} (93%)
rename Documentation/hwmon/{tmp103 => tmp103.rst} (92%)
rename Documentation/hwmon/{tmp108 => tmp108.rst} (95%)
rename Documentation/hwmon/{tmp401 => tmp401.rst} (97%)
rename Documentation/hwmon/{tmp421 => tmp421.rst} (100%)
rename Documentation/hwmon/{tps40422 => tps40422.rst} (96%)
rename Documentation/hwmon/{twl4030-madc-hwmon => twl4030-madc-hwmon.rst} (100%)
rename Documentation/hwmon/{ucd9000 => ucd9000.rst} (97%)
rename Documentation/hwmon/{ucd9200 => ucd9200.rst} (97%)
rename Documentation/hwmon/{userspace-tools => userspace-tools.rst} (100%)
rename Documentation/hwmon/{vexpress => vexpress.rst} (100%)
rename Documentation/hwmon/{via686a => via686a.rst} (100%)
rename Documentation/hwmon/{vt1211 => vt1211.rst} (100%)
rename Documentation/hwmon/{w83627ehf => w83627ehf.rst} (100%)
rename Documentation/hwmon/{w83627hf => w83627hf.rst} (100%)
rename Documentation/hwmon/{w83773g => w83773g.rst} (100%)
rename Documentation/hwmon/{w83781d => w83781d.rst} (100%)
rename Documentation/hwmon/{w83791d => w83791d.rst} (99%)
rename Documentation/hwmon/{w83792d => w83792d.rst} (100%)
rename Documentation/hwmon/{w83793 => w83793.rst} (100%)
rename Documentation/hwmon/{w83795 => w83795.rst} (100%)
rename Documentation/hwmon/{w83l785ts => w83l785ts.rst} (100%)
rename Documentation/hwmon/{w83l786ng => w83l786ng.rst} (100%)
rename Documentation/hwmon/{wm831x => wm831x.rst} (100%)
rename Documentation/hwmon/{wm8350 => wm8350.rst} (100%)
rename Documentation/hwmon/{xgene-hwmon => xgene-hwmon.rst} (100%)
rename Documentation/hwmon/{zl6100 => zl6100.rst} (98%)
diff --git a/Documentation/devicetree/bindings/hwmon/g762.txt b/Documentation/devicetree/bindings/hwmon/g762.txt
index 25cc6d8ee575..6d154c4923de 100644
--- a/Documentation/devicetree/bindings/hwmon/g762.txt
+++ b/Documentation/devicetree/bindings/hwmon/g762.txt
@@ -21,7 +21,7 @@ If an optional property is not set in .dts file, then current value is kept
unmodified (e.g. u-boot installed value).
Additional information on operational parameters for the device is available
-in Documentation/hwmon/g762. A detailed datasheet for the device is available
+in Documentation/hwmon/g762.rst. A detailed datasheet for the device is available
at http://natisbad.org/NAS/refs/GMT_EDS-762_763-080710-0.2.pdf.
Example g762 node:
diff --git a/Documentation/hwmon/ab8500 b/Documentation/hwmon/ab8500.rst
similarity index 86%
rename from Documentation/hwmon/ab8500
rename to Documentation/hwmon/ab8500.rst
index d87c61151239..33f93a9cec04 100644
--- a/Documentation/hwmon/ab8500
+++ b/Documentation/hwmon/ab8500.rst
@@ -18,7 +18,7 @@ Authors:
Description
-----------
-See also Documentation/hwmon/abx500. This is the ST-Ericsson AB8500 specific
+See also Documentation/hwmon/abx500.rst. This is the ST-Ericsson AB8500 specific
driver.
Currently only the AB8500 internal sensor and one external sensor for battery
diff --git a/Documentation/hwmon/abituguru-datasheet b/Documentation/hwmon/abituguru-datasheet.rst
similarity index 100%
rename from Documentation/hwmon/abituguru-datasheet
rename to Documentation/hwmon/abituguru-datasheet.rst
diff --git a/Documentation/hwmon/abituguru b/Documentation/hwmon/abituguru.rst
similarity index 100%
rename from Documentation/hwmon/abituguru
rename to Documentation/hwmon/abituguru.rst
diff --git a/Documentation/hwmon/abituguru3 b/Documentation/hwmon/abituguru3.rst
similarity index 100%
rename from Documentation/hwmon/abituguru3
rename to Documentation/hwmon/abituguru3.rst
diff --git a/Documentation/hwmon/abx500 b/Documentation/hwmon/abx500.rst
similarity index 100%
rename from Documentation/hwmon/abx500
rename to Documentation/hwmon/abx500.rst
diff --git a/Documentation/hwmon/acpi_power_meter b/Documentation/hwmon/acpi_power_meter.rst
similarity index 97%
rename from Documentation/hwmon/acpi_power_meter
rename to Documentation/hwmon/acpi_power_meter.rst
index 7665ca6ba957..4a0941ade0ca 100644
--- a/Documentation/hwmon/acpi_power_meter
+++ b/Documentation/hwmon/acpi_power_meter.rst
@@ -21,7 +21,7 @@ the ACPI 4.0 spec (Chapter 10.4). These devices have a simple set of
features--a power meter that returns average power use over a configurable
interval, an optional capping mechanism, and a couple of trip points. The
sysfs interface conforms with the specification outlined in the "Power" section
-of Documentation/hwmon/sysfs-interface.
+of Documentation/hwmon/sysfs-interface.rst.
Special Features
----------------
diff --git a/Documentation/hwmon/ad7314 b/Documentation/hwmon/ad7314.rst
similarity index 100%
rename from Documentation/hwmon/ad7314
rename to Documentation/hwmon/ad7314.rst
diff --git a/Documentation/hwmon/adc128d818 b/Documentation/hwmon/adc128d818.rst
similarity index 100%
rename from Documentation/hwmon/adc128d818
rename to Documentation/hwmon/adc128d818.rst
diff --git a/Documentation/hwmon/adm1021 b/Documentation/hwmon/adm1021.rst
similarity index 100%
rename from Documentation/hwmon/adm1021
rename to Documentation/hwmon/adm1021.rst
diff --git a/Documentation/hwmon/adm1025 b/Documentation/hwmon/adm1025.rst
similarity index 100%
rename from Documentation/hwmon/adm1025
rename to Documentation/hwmon/adm1025.rst
diff --git a/Documentation/hwmon/adm1026 b/Documentation/hwmon/adm1026.rst
similarity index 100%
rename from Documentation/hwmon/adm1026
rename to Documentation/hwmon/adm1026.rst
diff --git a/Documentation/hwmon/adm1031 b/Documentation/hwmon/adm1031.rst
similarity index 100%
rename from Documentation/hwmon/adm1031
rename to Documentation/hwmon/adm1031.rst
diff --git a/Documentation/hwmon/adm1275 b/Documentation/hwmon/adm1275.rst
similarity index 97%
rename from Documentation/hwmon/adm1275
rename to Documentation/hwmon/adm1275.rst
index 5c5860011d6e..9a1913e5b4d9 100644
--- a/Documentation/hwmon/adm1275
+++ b/Documentation/hwmon/adm1275.rst
@@ -68,7 +68,7 @@ integrated 12 bit analog-to-digital converter (ADC), accessed using a
PMBus interface.
The driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus for details on PMBus client drivers.
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
@@ -90,7 +90,7 @@ Platform data support
---------------------
The driver supports standard PMBus driver platform data. Please see
-Documentation/hwmon/pmbus for details.
+Documentation/hwmon/pmbus.rst for details.
Sysfs entries
diff --git a/Documentation/hwmon/adm9240 b/Documentation/hwmon/adm9240.rst
similarity index 100%
rename from Documentation/hwmon/adm9240
rename to Documentation/hwmon/adm9240.rst
diff --git a/Documentation/hwmon/ads1015 b/Documentation/hwmon/ads1015.rst
similarity index 100%
rename from Documentation/hwmon/ads1015
rename to Documentation/hwmon/ads1015.rst
diff --git a/Documentation/hwmon/ads7828 b/Documentation/hwmon/ads7828.rst
similarity index 100%
rename from Documentation/hwmon/ads7828
rename to Documentation/hwmon/ads7828.rst
diff --git a/Documentation/hwmon/adt7410 b/Documentation/hwmon/adt7410.rst
similarity index 100%
rename from Documentation/hwmon/adt7410
rename to Documentation/hwmon/adt7410.rst
diff --git a/Documentation/hwmon/adt7411 b/Documentation/hwmon/adt7411.rst
similarity index 100%
rename from Documentation/hwmon/adt7411
rename to Documentation/hwmon/adt7411.rst
diff --git a/Documentation/hwmon/adt7462 b/Documentation/hwmon/adt7462.rst
similarity index 99%
rename from Documentation/hwmon/adt7462
rename to Documentation/hwmon/adt7462.rst
index a7a831118d32..139e19696188 100644
--- a/Documentation/hwmon/adt7462
+++ b/Documentation/hwmon/adt7462.rst
@@ -68,4 +68,3 @@ The ADT7462 will scale the pwm between the lower and higher pwm speed when
the temperature is between the two temperature boundaries. PWM values range
from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
temperature sensor associated with the PWM control exceeds temp#_max.
-
diff --git a/Documentation/hwmon/adt7470 b/Documentation/hwmon/adt7470.rst
similarity index 100%
rename from Documentation/hwmon/adt7470
rename to Documentation/hwmon/adt7470.rst
diff --git a/Documentation/hwmon/adt7475 b/Documentation/hwmon/adt7475.rst
similarity index 100%
rename from Documentation/hwmon/adt7475
rename to Documentation/hwmon/adt7475.rst
diff --git a/Documentation/hwmon/amc6821 b/Documentation/hwmon/amc6821.rst
similarity index 99%
rename from Documentation/hwmon/amc6821
rename to Documentation/hwmon/amc6821.rst
index d10eabcbc0f3..5ddb2849da90 100644
--- a/Documentation/hwmon/amc6821
+++ b/Documentation/hwmon/amc6821.rst
@@ -106,4 +106,3 @@ different settings, you can set the following parameters:
- init=1,
- pwminv: 0 default pwm output, 1 inverts pwm output.
-
diff --git a/Documentation/hwmon/asb100 b/Documentation/hwmon/asb100.rst
similarity index 99%
rename from Documentation/hwmon/asb100
rename to Documentation/hwmon/asb100.rst
index 311d9f7b6926..c2d5f97085fe 100644
--- a/Documentation/hwmon/asb100
+++ b/Documentation/hwmon/asb100.rst
@@ -71,4 +71,3 @@ TODO:
* Experiment with temp. sensor types.
* Are there really 13 voltage inputs? Probably not...
* Cleanups, no doubt...
-
diff --git a/Documentation/hwmon/asc7621 b/Documentation/hwmon/asc7621.rst
similarity index 100%
rename from Documentation/hwmon/asc7621
rename to Documentation/hwmon/asc7621.rst
diff --git a/Documentation/hwmon/aspeed-pwm-tacho b/Documentation/hwmon/aspeed-pwm-tacho.rst
similarity index 100%
rename from Documentation/hwmon/aspeed-pwm-tacho
rename to Documentation/hwmon/aspeed-pwm-tacho.rst
diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp.rst
similarity index 100%
rename from Documentation/hwmon/coretemp
rename to Documentation/hwmon/coretemp.rst
diff --git a/Documentation/hwmon/da9052 b/Documentation/hwmon/da9052.rst
similarity index 100%
rename from Documentation/hwmon/da9052
rename to Documentation/hwmon/da9052.rst
diff --git a/Documentation/hwmon/da9055 b/Documentation/hwmon/da9055.rst
similarity index 100%
rename from Documentation/hwmon/da9055
rename to Documentation/hwmon/da9055.rst
diff --git a/Documentation/hwmon/dme1737 b/Documentation/hwmon/dme1737.rst
similarity index 100%
rename from Documentation/hwmon/dme1737
rename to Documentation/hwmon/dme1737.rst
diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621.rst
similarity index 100%
rename from Documentation/hwmon/ds1621
rename to Documentation/hwmon/ds1621.rst
diff --git a/Documentation/hwmon/ds620 b/Documentation/hwmon/ds620.rst
similarity index 100%
rename from Documentation/hwmon/ds620
rename to Documentation/hwmon/ds620.rst
diff --git a/Documentation/hwmon/emc1403 b/Documentation/hwmon/emc1403.rst
similarity index 100%
rename from Documentation/hwmon/emc1403
rename to Documentation/hwmon/emc1403.rst
diff --git a/Documentation/hwmon/emc2103 b/Documentation/hwmon/emc2103.rst
similarity index 100%
rename from Documentation/hwmon/emc2103
rename to Documentation/hwmon/emc2103.rst
diff --git a/Documentation/hwmon/emc6w201 b/Documentation/hwmon/emc6w201.rst
similarity index 100%
rename from Documentation/hwmon/emc6w201
rename to Documentation/hwmon/emc6w201.rst
diff --git a/Documentation/hwmon/f71805f b/Documentation/hwmon/f71805f.rst
similarity index 100%
rename from Documentation/hwmon/f71805f
rename to Documentation/hwmon/f71805f.rst
diff --git a/Documentation/hwmon/f71882fg b/Documentation/hwmon/f71882fg.rst
similarity index 100%
rename from Documentation/hwmon/f71882fg
rename to Documentation/hwmon/f71882fg.rst
diff --git a/Documentation/hwmon/fam15h_power b/Documentation/hwmon/fam15h_power.rst
similarity index 100%
rename from Documentation/hwmon/fam15h_power
rename to Documentation/hwmon/fam15h_power.rst
diff --git a/Documentation/hwmon/ftsteutates b/Documentation/hwmon/ftsteutates.rst
similarity index 100%
rename from Documentation/hwmon/ftsteutates
rename to Documentation/hwmon/ftsteutates.rst
diff --git a/Documentation/hwmon/g760a b/Documentation/hwmon/g760a.rst
similarity index 100%
rename from Documentation/hwmon/g760a
rename to Documentation/hwmon/g760a.rst
diff --git a/Documentation/hwmon/g762 b/Documentation/hwmon/g762.rst
similarity index 97%
rename from Documentation/hwmon/g762
rename to Documentation/hwmon/g762.rst
index 54574e26df21..0371b3365c48 100644
--- a/Documentation/hwmon/g762
+++ b/Documentation/hwmon/g762.rst
@@ -7,7 +7,7 @@ modes - PWM or DC - are supported by the device.
For additional information, a detailed datasheet is available at
http://natisbad.org/NAS/ref/GMT_EDS-762_763-080710-0.2.pdf. sysfs
-bindings are described in Documentation/hwmon/sysfs-interface.
+bindings are described in Documentation/hwmon/sysfs-interface.rst.
The following entries are available to the user in a subdirectory of
/sys/bus/i2c/drivers/g762/ to control the operation of the device.
diff --git a/Documentation/hwmon/gl518sm b/Documentation/hwmon/gl518sm.rst
similarity index 100%
rename from Documentation/hwmon/gl518sm
rename to Documentation/hwmon/gl518sm.rst
diff --git a/Documentation/hwmon/hih6130 b/Documentation/hwmon/hih6130.rst
similarity index 100%
rename from Documentation/hwmon/hih6130
rename to Documentation/hwmon/hih6130.rst
diff --git a/Documentation/hwmon/hwmon-kernel-api.txt b/Documentation/hwmon/hwmon-kernel-api.rst
similarity index 99%
rename from Documentation/hwmon/hwmon-kernel-api.txt
rename to Documentation/hwmon/hwmon-kernel-api.rst
index b347b959fcda..c41eb6108103 100644
--- a/Documentation/hwmon/hwmon-kernel-api.txt
+++ b/Documentation/hwmon/hwmon-kernel-api.rst
@@ -12,10 +12,10 @@ drivers that want to use the hardware monitoring framework.
This document does not describe what a hardware monitoring (hwmon) Driver or
Device is. It also does not describe the API which can be used by user space
to communicate with a hardware monitoring device. If you want to know this
-then please read the following file: Documentation/hwmon/sysfs-interface.
+then please read the following file: Documentation/hwmon/sysfs-interface.rst.
For additional guidelines on how to write and improve hwmon drivers, please
-also read Documentation/hwmon/submitting-patches.
+also read Documentation/hwmon/submitting-patches.rst.
The API
-------
diff --git a/Documentation/hwmon/ibm-cffps b/Documentation/hwmon/ibm-cffps.rst
similarity index 100%
rename from Documentation/hwmon/ibm-cffps
rename to Documentation/hwmon/ibm-cffps.rst
diff --git a/Documentation/hwmon/ibmaem b/Documentation/hwmon/ibmaem.rst
similarity index 100%
rename from Documentation/hwmon/ibmaem
rename to Documentation/hwmon/ibmaem.rst
diff --git a/Documentation/hwmon/ibmpowernv b/Documentation/hwmon/ibmpowernv.rst
similarity index 100%
rename from Documentation/hwmon/ibmpowernv
rename to Documentation/hwmon/ibmpowernv.rst
diff --git a/Documentation/hwmon/ina209 b/Documentation/hwmon/ina209.rst
similarity index 100%
rename from Documentation/hwmon/ina209
rename to Documentation/hwmon/ina209.rst
diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx.rst
similarity index 97%
rename from Documentation/hwmon/ina2xx
rename to Documentation/hwmon/ina2xx.rst
index 95badf9c396f..94b9a260c518 100644
--- a/Documentation/hwmon/ina2xx
+++ b/Documentation/hwmon/ina2xx.rst
@@ -78,7 +78,7 @@ refer to the Documentation/devicetree/bindings/hwmon/ina2xx.txt for bindings
if the device tree is used.
Additionally ina226 supports update_interval attribute as described in
-Documentation/hwmon/sysfs-interface. Internally the interval is the sum of
+Documentation/hwmon/sysfs-interface.rst. Internally the interval is the sum of
bus and shunt voltage conversion times multiplied by the averaging rate. We
don't touch the conversion times and only modify the number of averages. The
lower limit of the update_interval is 2 ms, the upper limit is 2253 ms.
diff --git a/Documentation/hwmon/ina3221 b/Documentation/hwmon/ina3221.rst
similarity index 100%
rename from Documentation/hwmon/ina3221
rename to Documentation/hwmon/ina3221.rst
diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
new file mode 100644
index 000000000000..893804414510
--- /dev/null
+++ b/Documentation/hwmon/index.rst
@@ -0,0 +1,179 @@
+=========================
+Linux Hardware Monitoring
+=========================
+
+.. toctree::
+ :maxdepth: 1
+
+ hwmon-kernel-api.rst
+ pmbus-core.rst
+ submitting-patches.rst
+ sysfs-interface.rst
+ userspace-tools.rst
+
+Hardware Monitoring Kernel Drivers
+==================================
+
+.. toctree::
+ :maxdepth: 1
+
+ ab8500.rst
+ abituguru.rst
+ abituguru3.rst
+ abx500.rst
+ acpi_power_meter.rst
+ ad7314.rst
+ adc128d818.rst
+ adm1021.rst
+ adm1025.rst
+ adm1026.rst
+ adm1031.rst
+ adm1275.rst
+ adm9240.rst
+ ads1015.rst
+ ads7828.rst
+ adt7410.rst
+ adt7411.rst
+ adt7462.rst
+ adt7470.rst
+ adt7475.rst
+ amc6821.rst
+ asb100.rst
+ asc7621.rst
+ aspeed-pwm-tacho.rst
+ coretemp.rst
+ da9052.rst
+ da9055.rst
+ dme1737.rst
+ ds1621.rst
+ ds620.rst
+ emc1403.rst
+ emc2103.rst
+ emc6w201.rst
+ f71805f.rst
+ f71882fg.rst
+ fam15h_power.rst
+ ftsteutates.rst
+ g760a.rst
+ g762.rst
+ gl518sm.rst
+ hih6130.rst
+ ibmaem.rst
+ ibm-cffps.rst
+ ibmpowernv.rst
+ ina209.rst
+ ina2xx.rst
+ ina3221.rst
+ ir35221.rst
+ it87.rst
+ jc42.rst
+ k10temp.rst
+ k8temp.rst
+ lineage-pem.rst
+ lm25066.rst
+ lm63.rst
+ lm70.rst
+ lm73.rst
+ lm75.rst
+ lm77.rst
+ lm78.rst
+ lm80.rst
+ lm83.rst
+ lm85.rst
+ lm87.rst
+ lm90.rst
+ lm92.rst
+ lm93.rst
+ lm95234.rst
+ lm95245.rst
+ ltc2945.rst
+ ltc2978.rst
+ ltc2990.rst
+ ltc3815.rst
+ ltc4151.rst
+ ltc4215.rst
+ ltc4245.rst
+ ltc4260.rst
+ ltc4261.rst
+ max16064.rst
+ max16065.rst
+ max1619.rst
+ max1668.rst
+ max197.rst
+ max20751.rst
+ max31722.rst
+ max31785.rst
+ max31790.rst
+ max34440.rst
+ max6639.rst
+ max6642.rst
+ max6650.rst
+ max6697.rst
+ max8688.rst
+ mc13783-adc.rst
+ mcp3021.rst
+ menf21bmc.rst
+ mlxreg-fan.rst
+ nct6683.rst
+ nct6775.rst
+ nct7802.rst
+ nct7904.rst
+ npcm750-pwm-fan.rst
+ nsa320.rst
+ ntc_thermistor.rst
+ occ.rst
+ pc87360.rst
+ pc87427.rst
+ pcf8591.rst
+ pmbus.rst
+ powr1220.rst
+ pwm-fan.rst
+ raspberrypi-hwmon.rst
+ sch5627.rst
+ sch5636.rst
+ scpi-hwmon.rst
+ sht15.rst
+ sht21.rst
+ sht3x.rst
+ shtc1.rst
+ sis5595.rst
+ smm665.rst
+ smsc47b397.rst
+ smsc47m192.rst
+ smsc47m1.rst
+ tc654.rst
+ tc74.rst
+ thmc50.rst
+ tmp102.rst
+ tmp103.rst
+ tmp108.rst
+ tmp401.rst
+ tmp421.rst
+ tps40422.rst
+ twl4030-madc-hwmon.rst
+ ucd9000.rst
+ ucd9200.rst
+ vexpress.rst
+ via686a.rst
+ vt1211.rst
+ w83627ehf.rst
+ w83627hf.rst
+ w83773g.rst
+ w83781d.rst
+ w83791d.rst
+ w83792d.rst
+ w83793.rst
+ w83795.rst
+ w83l785ts.rst
+ w83l786ng.rst
+ wm831x.rst
+ wm8350.rst
+ xgene-hwmon.rst
+ zl6100.rst
+
+.. only:: subproject and html
+
+ Indices
+ =======
+
+ * :ref:`genindex`
diff --git a/Documentation/hwmon/ir35221 b/Documentation/hwmon/ir35221.rst
similarity index 100%
rename from Documentation/hwmon/ir35221
rename to Documentation/hwmon/ir35221.rst
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87.rst
similarity index 100%
rename from Documentation/hwmon/it87
rename to Documentation/hwmon/it87.rst
diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42.rst
similarity index 100%
rename from Documentation/hwmon/jc42
rename to Documentation/hwmon/jc42.rst
diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp.rst
similarity index 100%
rename from Documentation/hwmon/k10temp
rename to Documentation/hwmon/k10temp.rst
diff --git a/Documentation/hwmon/k8temp b/Documentation/hwmon/k8temp.rst
similarity index 100%
rename from Documentation/hwmon/k8temp
rename to Documentation/hwmon/k8temp.rst
diff --git a/Documentation/hwmon/lineage-pem b/Documentation/hwmon/lineage-pem.rst
similarity index 100%
rename from Documentation/hwmon/lineage-pem
rename to Documentation/hwmon/lineage-pem.rst
diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066.rst
similarity index 97%
rename from Documentation/hwmon/lm25066
rename to Documentation/hwmon/lm25066.rst
index 60b7f2722931..da15e3094c8c 100644
--- a/Documentation/hwmon/lm25066
+++ b/Documentation/hwmon/lm25066.rst
@@ -69,7 +69,7 @@ LM25066, LM5064, and LM5066/LM5066I Power Management, Monitoring,
Control, and Protection ICs.
The driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus for details on PMBus client drivers.
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
diff --git a/Documentation/hwmon/lm63 b/Documentation/hwmon/lm63.rst
similarity index 100%
rename from Documentation/hwmon/lm63
rename to Documentation/hwmon/lm63.rst
diff --git a/Documentation/hwmon/lm70 b/Documentation/hwmon/lm70.rst
similarity index 100%
rename from Documentation/hwmon/lm70
rename to Documentation/hwmon/lm70.rst
diff --git a/Documentation/hwmon/lm73 b/Documentation/hwmon/lm73.rst
similarity index 100%
rename from Documentation/hwmon/lm73
rename to Documentation/hwmon/lm73.rst
diff --git a/Documentation/hwmon/lm75 b/Documentation/hwmon/lm75.rst
similarity index 100%
rename from Documentation/hwmon/lm75
rename to Documentation/hwmon/lm75.rst
diff --git a/Documentation/hwmon/lm77 b/Documentation/hwmon/lm77.rst
similarity index 100%
rename from Documentation/hwmon/lm77
rename to Documentation/hwmon/lm77.rst
diff --git a/Documentation/hwmon/lm78 b/Documentation/hwmon/lm78.rst
similarity index 100%
rename from Documentation/hwmon/lm78
rename to Documentation/hwmon/lm78.rst
diff --git a/Documentation/hwmon/lm80 b/Documentation/hwmon/lm80.rst
similarity index 100%
rename from Documentation/hwmon/lm80
rename to Documentation/hwmon/lm80.rst
diff --git a/Documentation/hwmon/lm83 b/Documentation/hwmon/lm83.rst
similarity index 100%
rename from Documentation/hwmon/lm83
rename to Documentation/hwmon/lm83.rst
diff --git a/Documentation/hwmon/lm85 b/Documentation/hwmon/lm85.rst
similarity index 100%
rename from Documentation/hwmon/lm85
rename to Documentation/hwmon/lm85.rst
diff --git a/Documentation/hwmon/lm87 b/Documentation/hwmon/lm87.rst
similarity index 100%
rename from Documentation/hwmon/lm87
rename to Documentation/hwmon/lm87.rst
diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90.rst
similarity index 100%
rename from Documentation/hwmon/lm90
rename to Documentation/hwmon/lm90.rst
diff --git a/Documentation/hwmon/lm92 b/Documentation/hwmon/lm92.rst
similarity index 100%
rename from Documentation/hwmon/lm92
rename to Documentation/hwmon/lm92.rst
diff --git a/Documentation/hwmon/lm93 b/Documentation/hwmon/lm93.rst
similarity index 100%
rename from Documentation/hwmon/lm93
rename to Documentation/hwmon/lm93.rst
diff --git a/Documentation/hwmon/lm95234 b/Documentation/hwmon/lm95234.rst
similarity index 100%
rename from Documentation/hwmon/lm95234
rename to Documentation/hwmon/lm95234.rst
diff --git a/Documentation/hwmon/lm95245 b/Documentation/hwmon/lm95245.rst
similarity index 100%
rename from Documentation/hwmon/lm95245
rename to Documentation/hwmon/lm95245.rst
diff --git a/Documentation/hwmon/ltc2945 b/Documentation/hwmon/ltc2945.rst
similarity index 100%
rename from Documentation/hwmon/ltc2945
rename to Documentation/hwmon/ltc2945.rst
diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978.rst
similarity index 100%
rename from Documentation/hwmon/ltc2978
rename to Documentation/hwmon/ltc2978.rst
diff --git a/Documentation/hwmon/ltc2990 b/Documentation/hwmon/ltc2990.rst
similarity index 100%
rename from Documentation/hwmon/ltc2990
rename to Documentation/hwmon/ltc2990.rst
diff --git a/Documentation/hwmon/ltc3815 b/Documentation/hwmon/ltc3815.rst
similarity index 100%
rename from Documentation/hwmon/ltc3815
rename to Documentation/hwmon/ltc3815.rst
diff --git a/Documentation/hwmon/ltc4151 b/Documentation/hwmon/ltc4151.rst
similarity index 100%
rename from Documentation/hwmon/ltc4151
rename to Documentation/hwmon/ltc4151.rst
diff --git a/Documentation/hwmon/ltc4215 b/Documentation/hwmon/ltc4215.rst
similarity index 100%
rename from Documentation/hwmon/ltc4215
rename to Documentation/hwmon/ltc4215.rst
diff --git a/Documentation/hwmon/ltc4245 b/Documentation/hwmon/ltc4245.rst
similarity index 100%
rename from Documentation/hwmon/ltc4245
rename to Documentation/hwmon/ltc4245.rst
diff --git a/Documentation/hwmon/ltc4260 b/Documentation/hwmon/ltc4260.rst
similarity index 100%
rename from Documentation/hwmon/ltc4260
rename to Documentation/hwmon/ltc4260.rst
diff --git a/Documentation/hwmon/ltc4261 b/Documentation/hwmon/ltc4261.rst
similarity index 100%
rename from Documentation/hwmon/ltc4261
rename to Documentation/hwmon/ltc4261.rst
diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064.rst
similarity index 96%
rename from Documentation/hwmon/max16064
rename to Documentation/hwmon/max16064.rst
index 61ec679dc477..6d5e9538991f 100644
--- a/Documentation/hwmon/max16064
+++ b/Documentation/hwmon/max16064.rst
@@ -21,7 +21,7 @@ This driver supports hardware monitoring for Maxim MAX16064 Quad Power-Supply
Controller with Active-Voltage Output Control and PMBus Interface.
The driver is a client driver to the core PMBus driver.
-Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
+Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
diff --git a/Documentation/hwmon/max16065 b/Documentation/hwmon/max16065.rst
similarity index 100%
rename from Documentation/hwmon/max16065
rename to Documentation/hwmon/max16065.rst
diff --git a/Documentation/hwmon/max1619 b/Documentation/hwmon/max1619.rst
similarity index 99%
rename from Documentation/hwmon/max1619
rename to Documentation/hwmon/max1619.rst
index 4b3762c4eceb..e25956e70f73 100644
--- a/Documentation/hwmon/max1619
+++ b/Documentation/hwmon/max1619.rst
@@ -31,4 +31,3 @@ Only the external sensor has high and low limits.
The max1619 driver will not update its values more frequently than every
other second; reading them more often will do no harm, but will return
'old' values.
-
diff --git a/Documentation/hwmon/max1668 b/Documentation/hwmon/max1668.rst
similarity index 100%
rename from Documentation/hwmon/max1668
rename to Documentation/hwmon/max1668.rst
diff --git a/Documentation/hwmon/max197 b/Documentation/hwmon/max197.rst
similarity index 100%
rename from Documentation/hwmon/max197
rename to Documentation/hwmon/max197.rst
diff --git a/Documentation/hwmon/max20751 b/Documentation/hwmon/max20751.rst
similarity index 96%
rename from Documentation/hwmon/max20751
rename to Documentation/hwmon/max20751.rst
index d546695900ef..aa4469be6674 100644
--- a/Documentation/hwmon/max20751
+++ b/Documentation/hwmon/max20751.rst
@@ -23,7 +23,7 @@ This driver supports MAX20751 Multiphase Master with PMBus Interface
and Internal Buck Converter.
The driver is a client driver to the core PMBus driver.
-Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
+Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
diff --git a/Documentation/hwmon/max31722 b/Documentation/hwmon/max31722.rst
similarity index 100%
rename from Documentation/hwmon/max31722
rename to Documentation/hwmon/max31722.rst
diff --git a/Documentation/hwmon/max31785 b/Documentation/hwmon/max31785.rst
similarity index 100%
rename from Documentation/hwmon/max31785
rename to Documentation/hwmon/max31785.rst
diff --git a/Documentation/hwmon/max31790 b/Documentation/hwmon/max31790.rst
similarity index 100%
rename from Documentation/hwmon/max31790
rename to Documentation/hwmon/max31790.rst
diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440.rst
similarity index 98%
rename from Documentation/hwmon/max34440
rename to Documentation/hwmon/max34440.rst
index 639838ef29fd..939138e12b02 100644
--- a/Documentation/hwmon/max34440
+++ b/Documentation/hwmon/max34440.rst
@@ -76,7 +76,7 @@ based on GIN pins. The MAX34460 supports 12 voltage channels, and the MAX34461
supports 16 voltage channels.
The driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus for details on PMBus client drivers.
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
diff --git a/Documentation/hwmon/max6639 b/Documentation/hwmon/max6639.rst
similarity index 100%
rename from Documentation/hwmon/max6639
rename to Documentation/hwmon/max6639.rst
diff --git a/Documentation/hwmon/max6642 b/Documentation/hwmon/max6642.rst
similarity index 100%
rename from Documentation/hwmon/max6642
rename to Documentation/hwmon/max6642.rst
diff --git a/Documentation/hwmon/max6650 b/Documentation/hwmon/max6650.rst
similarity index 99%
rename from Documentation/hwmon/max6650
rename to Documentation/hwmon/max6650.rst
index 74dc3f0caaa2..253482add082 100644
--- a/Documentation/hwmon/max6650
+++ b/Documentation/hwmon/max6650.rst
@@ -72,4 +72,3 @@ clock: The clock frequency in Hz of the chip the driver should assume [254000]
Please have a look at the MAX6650/6651 data sheet and make sure that you fully
understand the meaning of these parameters before you attempt to change them.
-
diff --git a/Documentation/hwmon/max6697 b/Documentation/hwmon/max6697.rst
similarity index 100%
rename from Documentation/hwmon/max6697
rename to Documentation/hwmon/max6697.rst
diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688.rst
similarity index 97%
rename from Documentation/hwmon/max8688
rename to Documentation/hwmon/max8688.rst
index 43da139234c1..009487759c61 100644
--- a/Documentation/hwmon/max8688
+++ b/Documentation/hwmon/max8688.rst
@@ -21,7 +21,7 @@ This driver supports hardware monitoring for Maxim MAX8688 Digital Power-Supply
Controller/Monitor with PMBus Interface.
The driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus for details on PMBus client drivers.
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc.rst
similarity index 100%
rename from Documentation/hwmon/mc13783-adc
rename to Documentation/hwmon/mc13783-adc.rst
diff --git a/Documentation/hwmon/mcp3021 b/Documentation/hwmon/mcp3021.rst
similarity index 100%
rename from Documentation/hwmon/mcp3021
rename to Documentation/hwmon/mcp3021.rst
diff --git a/Documentation/hwmon/menf21bmc b/Documentation/hwmon/menf21bmc.rst
similarity index 100%
rename from Documentation/hwmon/menf21bmc
rename to Documentation/hwmon/menf21bmc.rst
diff --git a/Documentation/hwmon/mlxreg-fan b/Documentation/hwmon/mlxreg-fan.rst
similarity index 100%
rename from Documentation/hwmon/mlxreg-fan
rename to Documentation/hwmon/mlxreg-fan.rst
diff --git a/Documentation/hwmon/nct6683 b/Documentation/hwmon/nct6683.rst
similarity index 100%
rename from Documentation/hwmon/nct6683
rename to Documentation/hwmon/nct6683.rst
diff --git a/Documentation/hwmon/nct6775 b/Documentation/hwmon/nct6775.rst
similarity index 100%
rename from Documentation/hwmon/nct6775
rename to Documentation/hwmon/nct6775.rst
diff --git a/Documentation/hwmon/nct7802 b/Documentation/hwmon/nct7802.rst
similarity index 100%
rename from Documentation/hwmon/nct7802
rename to Documentation/hwmon/nct7802.rst
diff --git a/Documentation/hwmon/nct7904 b/Documentation/hwmon/nct7904.rst
similarity index 100%
rename from Documentation/hwmon/nct7904
rename to Documentation/hwmon/nct7904.rst
diff --git a/Documentation/hwmon/npcm750-pwm-fan b/Documentation/hwmon/npcm750-pwm-fan.rst
similarity index 100%
rename from Documentation/hwmon/npcm750-pwm-fan
rename to Documentation/hwmon/npcm750-pwm-fan.rst
diff --git a/Documentation/hwmon/nsa320 b/Documentation/hwmon/nsa320.rst
similarity index 100%
rename from Documentation/hwmon/nsa320
rename to Documentation/hwmon/nsa320.rst
diff --git a/Documentation/hwmon/ntc_thermistor b/Documentation/hwmon/ntc_thermistor.rst
similarity index 100%
rename from Documentation/hwmon/ntc_thermistor
rename to Documentation/hwmon/ntc_thermistor.rst
diff --git a/Documentation/hwmon/occ b/Documentation/hwmon/occ.rst
similarity index 100%
rename from Documentation/hwmon/occ
rename to Documentation/hwmon/occ.rst
diff --git a/Documentation/hwmon/pc87360 b/Documentation/hwmon/pc87360.rst
similarity index 100%
rename from Documentation/hwmon/pc87360
rename to Documentation/hwmon/pc87360.rst
diff --git a/Documentation/hwmon/pc87427 b/Documentation/hwmon/pc87427.rst
similarity index 100%
rename from Documentation/hwmon/pc87427
rename to Documentation/hwmon/pc87427.rst
diff --git a/Documentation/hwmon/pcf8591 b/Documentation/hwmon/pcf8591.rst
similarity index 100%
rename from Documentation/hwmon/pcf8591
rename to Documentation/hwmon/pcf8591.rst
diff --git a/Documentation/hwmon/pmbus-core b/Documentation/hwmon/pmbus-core.rst
similarity index 100%
rename from Documentation/hwmon/pmbus-core
rename to Documentation/hwmon/pmbus-core.rst
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus.rst
similarity index 100%
rename from Documentation/hwmon/pmbus
rename to Documentation/hwmon/pmbus.rst
diff --git a/Documentation/hwmon/powr1220 b/Documentation/hwmon/powr1220.rst
similarity index 100%
rename from Documentation/hwmon/powr1220
rename to Documentation/hwmon/powr1220.rst
diff --git a/Documentation/hwmon/pwm-fan b/Documentation/hwmon/pwm-fan.rst
similarity index 100%
rename from Documentation/hwmon/pwm-fan
rename to Documentation/hwmon/pwm-fan.rst
diff --git a/Documentation/hwmon/raspberrypi-hwmon b/Documentation/hwmon/raspberrypi-hwmon.rst
similarity index 100%
rename from Documentation/hwmon/raspberrypi-hwmon
rename to Documentation/hwmon/raspberrypi-hwmon.rst
diff --git a/Documentation/hwmon/sch5627 b/Documentation/hwmon/sch5627.rst
similarity index 100%
rename from Documentation/hwmon/sch5627
rename to Documentation/hwmon/sch5627.rst
diff --git a/Documentation/hwmon/sch5636 b/Documentation/hwmon/sch5636.rst
similarity index 100%
rename from Documentation/hwmon/sch5636
rename to Documentation/hwmon/sch5636.rst
diff --git a/Documentation/hwmon/scpi-hwmon b/Documentation/hwmon/scpi-hwmon.rst
similarity index 100%
rename from Documentation/hwmon/scpi-hwmon
rename to Documentation/hwmon/scpi-hwmon.rst
diff --git a/Documentation/hwmon/sht15 b/Documentation/hwmon/sht15.rst
similarity index 100%
rename from Documentation/hwmon/sht15
rename to Documentation/hwmon/sht15.rst
diff --git a/Documentation/hwmon/sht21 b/Documentation/hwmon/sht21.rst
similarity index 100%
rename from Documentation/hwmon/sht21
rename to Documentation/hwmon/sht21.rst
diff --git a/Documentation/hwmon/sht3x b/Documentation/hwmon/sht3x.rst
similarity index 100%
rename from Documentation/hwmon/sht3x
rename to Documentation/hwmon/sht3x.rst
diff --git a/Documentation/hwmon/shtc1 b/Documentation/hwmon/shtc1.rst
similarity index 100%
rename from Documentation/hwmon/shtc1
rename to Documentation/hwmon/shtc1.rst
diff --git a/Documentation/hwmon/sis5595 b/Documentation/hwmon/sis5595.rst
similarity index 99%
rename from Documentation/hwmon/sis5595
rename to Documentation/hwmon/sis5595.rst
index 5acba6b0c0db..16123b3bfff9 100644
--- a/Documentation/hwmon/sis5595
+++ b/Documentation/hwmon/sis5595.rst
@@ -121,4 +121,3 @@ Problems
--------
Some chips refuse to be enabled. We don't know why.
The driver will recognize this and print a message in dmesg.
-
diff --git a/Documentation/hwmon/smm665 b/Documentation/hwmon/smm665.rst
similarity index 100%
rename from Documentation/hwmon/smm665
rename to Documentation/hwmon/smm665.rst
diff --git a/Documentation/hwmon/smsc47b397 b/Documentation/hwmon/smsc47b397.rst
similarity index 100%
rename from Documentation/hwmon/smsc47b397
rename to Documentation/hwmon/smsc47b397.rst
diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1.rst
similarity index 100%
rename from Documentation/hwmon/smsc47m1
rename to Documentation/hwmon/smsc47m1.rst
diff --git a/Documentation/hwmon/smsc47m192 b/Documentation/hwmon/smsc47m192.rst
similarity index 100%
rename from Documentation/hwmon/smsc47m192
rename to Documentation/hwmon/smsc47m192.rst
diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches.rst
similarity index 98%
rename from Documentation/hwmon/submitting-patches
rename to Documentation/hwmon/submitting-patches.rst
index 12540b7d9b50..f9796b9d9db6 100644
--- a/Documentation/hwmon/submitting-patches
+++ b/Documentation/hwmon/submitting-patches.rst
@@ -39,7 +39,7 @@ increase the chances of your change being accepted.
2. Adding functionality to existing drivers
-------------------------------------------
-* Make sure the documentation in Documentation/hwmon/<driver_name> is up to
+* Make sure the documentation in Documentation/hwmon/<driver_name>.rst is up to
date.
* Make sure the information in Kconfig is up to date.
@@ -61,7 +61,7 @@ increase the chances of your change being accepted.
* Consider adding yourself to MAINTAINERS.
-* Document the driver in Documentation/hwmon/<driver_name>.
+* Document the driver in Documentation/hwmon/<driver_name>.rst.
* Add the driver to Kconfig and Makefile in alphabetical order.
@@ -134,7 +134,7 @@ increase the chances of your change being accepted.
non-standard attributes, or you believe you do, discuss it on the mailing list
first. Either case, provide a detailed explanation why you need the
non-standard attribute(s).
- Standard attributes are specified in Documentation/hwmon/sysfs-interface.
+ Standard attributes are specified in Documentation/hwmon/sysfs-interface.rst.
* When deciding which sysfs attributes to support, look at the chip's
capabilities. While we do not expect your driver to support everything the
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface.rst
similarity index 100%
rename from Documentation/hwmon/sysfs-interface
rename to Documentation/hwmon/sysfs-interface.rst
diff --git a/Documentation/hwmon/tc654 b/Documentation/hwmon/tc654.rst
similarity index 100%
rename from Documentation/hwmon/tc654
rename to Documentation/hwmon/tc654.rst
diff --git a/Documentation/hwmon/tc74 b/Documentation/hwmon/tc74.rst
similarity index 100%
rename from Documentation/hwmon/tc74
rename to Documentation/hwmon/tc74.rst
diff --git a/Documentation/hwmon/thmc50 b/Documentation/hwmon/thmc50.rst
similarity index 99%
rename from Documentation/hwmon/thmc50
rename to Documentation/hwmon/thmc50.rst
index 6dba1b59b20c..cfff3885287d 100644
--- a/Documentation/hwmon/thmc50
+++ b/Documentation/hwmon/thmc50.rst
@@ -87,4 +87,3 @@ so it stops fans even if the value 0 into the ANALOG_OUT register does not.
The driver was tested on Compaq AP550 with two ADM1022 chips (one works
in the temp3 mode), five temperature readings and two fans.
-
diff --git a/Documentation/hwmon/tmp102 b/Documentation/hwmon/tmp102.rst
similarity index 93%
rename from Documentation/hwmon/tmp102
rename to Documentation/hwmon/tmp102.rst
index 5e34821df4ab..b1f585531a88 100644
--- a/Documentation/hwmon/tmp102
+++ b/Documentation/hwmon/tmp102.rst
@@ -28,4 +28,4 @@ The TMP102 has a programmable update rate that can select between 8, 4, 1, and
0.5 Hz. (Currently the driver only supports the default of 4 Hz).
The driver provides the common sysfs-interface for temperatures (see
-Documentation/hwmon/sysfs-interface under Temperatures).
+Documentation/hwmon/sysfs-interface.rst under Temperatures).
diff --git a/Documentation/hwmon/tmp103 b/Documentation/hwmon/tmp103.rst
similarity index 92%
rename from Documentation/hwmon/tmp103
rename to Documentation/hwmon/tmp103.rst
index 7682a795e38c..15d25806d585 100644
--- a/Documentation/hwmon/tmp103
+++ b/Documentation/hwmon/tmp103.rst
@@ -27,7 +27,7 @@ Resolution: 8 Bits
Accuracy: ±1°C Typ (–10°C to +100°C)
The driver provides the common sysfs-interface for temperatures (see
-Documentation/hwmon/sysfs-interface under Temperatures).
+Documentation/hwmon/sysfs-interface.rst under Temperatures).
Please refer how to instantiate this driver:
Documentation/i2c/instantiating-devices
diff --git a/Documentation/hwmon/tmp108 b/Documentation/hwmon/tmp108.rst
similarity index 95%
rename from Documentation/hwmon/tmp108
rename to Documentation/hwmon/tmp108.rst
index 7e08b7ef1e2f..5f4266a16cb2 100644
--- a/Documentation/hwmon/tmp108
+++ b/Documentation/hwmon/tmp108.rst
@@ -38,4 +38,4 @@ and then the device is shut down automatically. (This driver only supports
continuous mode.)
The driver provides the common sysfs-interface for temperatures (see
-Documentation/hwmon/sysfs-interface under Temperatures).
+Documentation/hwmon/sysfs-interface.rst under Temperatures).
diff --git a/Documentation/hwmon/tmp401 b/Documentation/hwmon/tmp401.rst
similarity index 97%
rename from Documentation/hwmon/tmp401
rename to Documentation/hwmon/tmp401.rst
index bd865bbdb38d..6a05a0719bc7 100644
--- a/Documentation/hwmon/tmp401
+++ b/Documentation/hwmon/tmp401.rst
@@ -68,7 +68,7 @@ supported by the driver so far, so using the default resolution of 0.5
degree).
The driver provides the common sysfs-interface for temperatures (see
-Documentation/hwmon/sysfs-interface under Temperatures).
+Documentation/hwmon/sysfs-interface.rst under Temperatures).
The TMP411 and TMP431 chips are compatible with TMP401. TMP411 provides
some additional features.
diff --git a/Documentation/hwmon/tmp421 b/Documentation/hwmon/tmp421.rst
similarity index 100%
rename from Documentation/hwmon/tmp421
rename to Documentation/hwmon/tmp421.rst
diff --git a/Documentation/hwmon/tps40422 b/Documentation/hwmon/tps40422.rst
similarity index 96%
rename from Documentation/hwmon/tps40422
rename to Documentation/hwmon/tps40422.rst
index 359751eb5ed4..b691e30479dd 100644
--- a/Documentation/hwmon/tps40422
+++ b/Documentation/hwmon/tps40422.rst
@@ -21,7 +21,7 @@ This driver supports TI TPS40422 Dual-Output or Two-Phase Synchronous Buck
Controller with PMBus
The driver is a client driver to the core PMBus driver.
-Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
+Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
diff --git a/Documentation/hwmon/twl4030-madc-hwmon b/Documentation/hwmon/twl4030-madc-hwmon.rst
similarity index 100%
rename from Documentation/hwmon/twl4030-madc-hwmon
rename to Documentation/hwmon/twl4030-madc-hwmon.rst
diff --git a/Documentation/hwmon/ucd9000 b/Documentation/hwmon/ucd9000.rst
similarity index 97%
rename from Documentation/hwmon/ucd9000
rename to Documentation/hwmon/ucd9000.rst
index d69061b7312c..ebc4f2b3bfea 100644
--- a/Documentation/hwmon/ucd9000
+++ b/Documentation/hwmon/ucd9000.rst
@@ -57,7 +57,7 @@ system-health monitor. The device integrates a 12-bit ADC for monitoring up to
13 power-supply voltage, current, or temperature inputs.
This driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus for details on PMBus client drivers.
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
@@ -72,7 +72,7 @@ Platform data support
---------------------
The driver supports standard PMBus driver platform data. Please see
-Documentation/hwmon/pmbus for details.
+Documentation/hwmon/pmbus.rst for details.
Sysfs entries
diff --git a/Documentation/hwmon/ucd9200 b/Documentation/hwmon/ucd9200.rst
similarity index 97%
rename from Documentation/hwmon/ucd9200
rename to Documentation/hwmon/ucd9200.rst
index 44eda4a579b6..b819dfd75f71 100644
--- a/Documentation/hwmon/ucd9200
+++ b/Documentation/hwmon/ucd9200.rst
@@ -33,7 +33,7 @@ dedicated circuitry for DC/DC loop management with flash memory and a serial
interface to support configuration, monitoring and management.
This driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus for details on PMBus client drivers.
+Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
Usage Notes
@@ -48,7 +48,7 @@ Platform data support
---------------------
The driver supports standard PMBus driver platform data. Please see
-Documentation/hwmon/pmbus for details.
+Documentation/hwmon/pmbus.rst for details.
Sysfs entries
diff --git a/Documentation/hwmon/userspace-tools b/Documentation/hwmon/userspace-tools.rst
similarity index 100%
rename from Documentation/hwmon/userspace-tools
rename to Documentation/hwmon/userspace-tools.rst
diff --git a/Documentation/hwmon/vexpress b/Documentation/hwmon/vexpress.rst
similarity index 100%
rename from Documentation/hwmon/vexpress
rename to Documentation/hwmon/vexpress.rst
diff --git a/Documentation/hwmon/via686a b/Documentation/hwmon/via686a.rst
similarity index 100%
rename from Documentation/hwmon/via686a
rename to Documentation/hwmon/via686a.rst
diff --git a/Documentation/hwmon/vt1211 b/Documentation/hwmon/vt1211.rst
similarity index 100%
rename from Documentation/hwmon/vt1211
rename to Documentation/hwmon/vt1211.rst
diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf.rst
similarity index 100%
rename from Documentation/hwmon/w83627ehf
rename to Documentation/hwmon/w83627ehf.rst
diff --git a/Documentation/hwmon/w83627hf b/Documentation/hwmon/w83627hf.rst
similarity index 100%
rename from Documentation/hwmon/w83627hf
rename to Documentation/hwmon/w83627hf.rst
diff --git a/Documentation/hwmon/w83773g b/Documentation/hwmon/w83773g.rst
similarity index 100%
rename from Documentation/hwmon/w83773g
rename to Documentation/hwmon/w83773g.rst
diff --git a/Documentation/hwmon/w83781d b/Documentation/hwmon/w83781d.rst
similarity index 100%
rename from Documentation/hwmon/w83781d
rename to Documentation/hwmon/w83781d.rst
diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d.rst
similarity index 99%
rename from Documentation/hwmon/w83791d
rename to Documentation/hwmon/w83791d.rst
index a91f9e5fb0c6..3adaed39b157 100644
--- a/Documentation/hwmon/w83791d
+++ b/Documentation/hwmon/w83791d.rst
@@ -102,7 +102,7 @@ This file is used for both legacy and new code.
The sysfs interface to the beep bitmask has migrated from the original legacy
method of a single sysfs beep_mask file to a newer method using multiple
-`*_beep` files as described in `Documentation/hwmon/sysfs-interface`.
+`*_beep` files as described in `Documentation/hwmon/sysfs-interface.rst`.
A similar change has occurred for the bitmap corresponding to the alarms. The
original legacy method used a single sysfs alarms file containing a bitmap
diff --git a/Documentation/hwmon/w83792d b/Documentation/hwmon/w83792d.rst
similarity index 100%
rename from Documentation/hwmon/w83792d
rename to Documentation/hwmon/w83792d.rst
diff --git a/Documentation/hwmon/w83793 b/Documentation/hwmon/w83793.rst
similarity index 100%
rename from Documentation/hwmon/w83793
rename to Documentation/hwmon/w83793.rst
diff --git a/Documentation/hwmon/w83795 b/Documentation/hwmon/w83795.rst
similarity index 100%
rename from Documentation/hwmon/w83795
rename to Documentation/hwmon/w83795.rst
diff --git a/Documentation/hwmon/w83l785ts b/Documentation/hwmon/w83l785ts.rst
similarity index 100%
rename from Documentation/hwmon/w83l785ts
rename to Documentation/hwmon/w83l785ts.rst
diff --git a/Documentation/hwmon/w83l786ng b/Documentation/hwmon/w83l786ng.rst
similarity index 100%
rename from Documentation/hwmon/w83l786ng
rename to Documentation/hwmon/w83l786ng.rst
diff --git a/Documentation/hwmon/wm831x b/Documentation/hwmon/wm831x.rst
similarity index 100%
rename from Documentation/hwmon/wm831x
rename to Documentation/hwmon/wm831x.rst
diff --git a/Documentation/hwmon/wm8350 b/Documentation/hwmon/wm8350.rst
similarity index 100%
rename from Documentation/hwmon/wm8350
rename to Documentation/hwmon/wm8350.rst
diff --git a/Documentation/hwmon/xgene-hwmon b/Documentation/hwmon/xgene-hwmon.rst
similarity index 100%
rename from Documentation/hwmon/xgene-hwmon
rename to Documentation/hwmon/xgene-hwmon.rst
diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100.rst
similarity index 98%
rename from Documentation/hwmon/zl6100
rename to Documentation/hwmon/zl6100.rst
index 4029970bace4..41513bb7fe51 100644
--- a/Documentation/hwmon/zl6100
+++ b/Documentation/hwmon/zl6100.rst
@@ -113,7 +113,7 @@ This driver supports hardware monitoring for Intersil / Zilker Labs ZL6100 and
compatible digital DC-DC controllers.
The driver is a client driver to the core PMBus driver. Please see
-Documentation/hwmon/pmbus and Documentation.hwmon/pmbus-core for details
+Documentation/hwmon/pmbus.rst and Documentation.hwmon/pmbus-core for details
on PMBus client drivers.
diff --git a/Documentation/index.rst b/Documentation/index.rst
index 80a421cb935e..3a710dc24fc8 100644
--- a/Documentation/index.rst
+++ b/Documentation/index.rst
@@ -83,6 +83,7 @@ needed).
media/index
networking/index
input/index
+ hwmon/index
gpu/index
security/index
sound/index
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index 911399730c1c..c3fa500df92c 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -316,7 +316,7 @@ ACPI thermal zones.
|---temp[1-*]_input: The current temperature of thermal zone [1-*]
|---temp[1-*]_critical: The critical trip point of thermal zone [1-*]
-Please read Documentation/hwmon/sysfs-interface for additional information.
+Please read Documentation/hwmon/sysfs-interface.rst for additional information.
***************************
* Thermal zone attributes *
diff --git a/MAINTAINERS b/MAINTAINERS
index 349e5d8c3f58..6269c9d671ca 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -468,7 +468,7 @@ ADM1025 HARDWARE MONITOR DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/adm1025
+F: Documentation/hwmon/adm1025.rst
F: drivers/hwmon/adm1025.c
ADM1029 HARDWARE MONITOR DRIVER
@@ -520,7 +520,7 @@ ADS1015 HARDWARE MONITOR DRIVER
M: Dirk Eibach <eibach@gdsys.de>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/ads1015
+F: Documentation/hwmon/ads1015.rst
F: drivers/hwmon/ads1015.c
F: include/linux/platform_data/ads1015.h
@@ -533,7 +533,7 @@ ADT7475 HARDWARE MONITOR DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/adt7475
+F: Documentation/hwmon/adt7475.rst
F: drivers/hwmon/adt7475.c
ADVANSYS SCSI DRIVER
@@ -764,7 +764,7 @@ AMD FAM15H PROCESSOR POWER MONITORING DRIVER
M: Huang Rui <ray.huang@amd.com>
L: linux-hwmon@vger.kernel.org
S: Supported
-F: Documentation/hwmon/fam15h_power
+F: Documentation/hwmon/fam15h_power.rst
F: drivers/hwmon/fam15h_power.c
AMD FCH GPIO DRIVER
@@ -2531,7 +2531,7 @@ ASC7621 HARDWARE MONITOR DRIVER
M: George Joseph <george.joseph@fairview5.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/asc7621
+F: Documentation/hwmon/asc7621.rst
F: drivers/hwmon/asc7621.c
ASPEED VIDEO ENGINE DRIVER
@@ -4071,7 +4071,7 @@ CORETEMP HARDWARE MONITORING DRIVER
M: Fenghua Yu <fenghua.yu@intel.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/coretemp
+F: Documentation/hwmon/coretemp.rst
F: drivers/hwmon/coretemp.c
COSA/SRP SYNC SERIAL DRIVER
@@ -4627,7 +4627,7 @@ DIALOG SEMICONDUCTOR DRIVERS
M: Support Opensource <support.opensource@diasemi.com>
W: http://www.dialog-semiconductor.com/products
S: Supported
-F: Documentation/hwmon/da90??
+F: Documentation/hwmon/da90??.rst
F: Documentation/devicetree/bindings/mfd/da90*.txt
F: Documentation/devicetree/bindings/input/da90??-onkey.txt
F: Documentation/devicetree/bindings/thermal/da90??-thermal.txt
@@ -4778,7 +4778,7 @@ DME1737 HARDWARE MONITOR DRIVER
M: Juerg Haefliger <juergh@gmail.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/dme1737
+F: Documentation/hwmon/dme1737.rst
F: drivers/hwmon/dme1737.c
DMI/SMBIOS SUPPORT
@@ -6006,7 +6006,7 @@ F71805F HARDWARE MONITORING DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/f71805f
+F: Documentation/hwmon/f71805f.rst
F: drivers/hwmon/f71805f.c
FADDR2LINE
@@ -7687,7 +7687,7 @@ INA209 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/ina209
+F: Documentation/hwmon/ina209.rst
F: Documentation/devicetree/bindings/hwmon/ina2xx.txt
F: drivers/hwmon/ina209.c
@@ -7695,7 +7695,7 @@ INA2XX HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/ina2xx
+F: Documentation/hwmon/ina2xx.rst
F: drivers/hwmon/ina2xx.c
F: include/linux/platform_data/ina2xx.h
@@ -8328,7 +8328,7 @@ IT87 HARDWARE MONITORING DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/it87
+F: Documentation/hwmon/it87.rst
F: drivers/hwmon/it87.c
IT913X MEDIA DRIVER
@@ -8372,7 +8372,7 @@ M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
F: drivers/hwmon/jc42.c
-F: Documentation/hwmon/jc42
+F: Documentation/hwmon/jc42.rst
JFS FILESYSTEM
M: Dave Kleikamp <shaggy@kernel.org>
@@ -8420,14 +8420,14 @@ K10TEMP HARDWARE MONITORING DRIVER
M: Clemens Ladisch <clemens@ladisch.de>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/k10temp
+F: Documentation/hwmon/k10temp.rst
F: drivers/hwmon/k10temp.c
K8TEMP HARDWARE MONITORING DRIVER
M: Rudolf Marek <r.marek@assembler.cz>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/k8temp
+F: Documentation/hwmon/k8temp.rst
F: drivers/hwmon/k8temp.c
KASAN
@@ -9118,21 +9118,21 @@ LM78 HARDWARE MONITOR DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/lm78
+F: Documentation/hwmon/lm78.rst
F: drivers/hwmon/lm78.c
LM83 HARDWARE MONITOR DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/lm83
+F: Documentation/hwmon/lm83.rst
F: drivers/hwmon/lm83.c
LM90 HARDWARE MONITOR DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/lm90
+F: Documentation/hwmon/lm90.rst
F: Documentation/devicetree/bindings/hwmon/lm90.txt
F: drivers/hwmon/lm90.c
F: include/dt-bindings/thermal/lm90.h
@@ -9141,7 +9141,7 @@ LM95234 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/lm95234
+F: Documentation/hwmon/lm95234.rst
F: drivers/hwmon/lm95234.c
LME2510 MEDIA DRIVER
@@ -9214,7 +9214,7 @@ LTC4261 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/ltc4261
+F: Documentation/hwmon/ltc4261.rst
F: drivers/hwmon/ltc4261.c
LTC4306 I2C MULTIPLEXER DRIVER
@@ -9445,7 +9445,7 @@ MAX16065 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/max16065
+F: Documentation/hwmon/max16065.rst
F: drivers/hwmon/max16065.c
MAX2175 SDR TUNER DRIVER
@@ -9461,14 +9461,14 @@ F: include/uapi/linux/max2175.h
MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
L: linux-hwmon@vger.kernel.org
S: Orphan
-F: Documentation/hwmon/max6650
+F: Documentation/hwmon/max6650.rst
F: drivers/hwmon/max6650.c
MAX6697 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/max6697
+F: Documentation/hwmon/max6697.rst
F: Documentation/devicetree/bindings/hwmon/max6697.txt
F: drivers/hwmon/max6697.c
F: include/linux/platform_data/max6697.h
@@ -10118,7 +10118,7 @@ F: drivers/mfd/menf21bmc.c
F: drivers/watchdog/menf21bmc_wdt.c
F: drivers/leds/leds-menf21bmc.c
F: drivers/hwmon/menf21bmc_hwmon.c
-F: Documentation/hwmon/menf21bmc
+F: Documentation/hwmon/menf21bmc.rst
MEN Z069 WATCHDOG DRIVER
M: Johannes Thumshirn <jth@kernel.org>
@@ -10747,7 +10747,7 @@ NCT6775 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/nct6775
+F: Documentation/hwmon/nct6775.rst
F: drivers/hwmon/nct6775.c
NET_FAILOVER MODULE
@@ -11841,7 +11841,7 @@ PC87360 HARDWARE MONITORING DRIVER
M: Jim Cromie <jim.cromie@gmail.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/pc87360
+F: Documentation/hwmon/pc87360.rst
F: drivers/hwmon/pc87360.c
PC8736x GPIO DRIVER
@@ -11853,7 +11853,7 @@ PC87427 HARDWARE MONITORING DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/pc87427
+F: Documentation/hwmon/pc87427.rst
F: drivers/hwmon/pc87427.c
PCA9532 LED DRIVER
@@ -12421,23 +12421,23 @@ S: Maintained
F: Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt
F: Documentation/devicetree/bindings/hwmon/max31785.txt
F: Documentation/devicetree/bindings/hwmon/ltc2978.txt
-F: Documentation/hwmon/adm1275
-F: Documentation/hwmon/ibm-cffps
-F: Documentation/hwmon/ir35221
-F: Documentation/hwmon/lm25066
-F: Documentation/hwmon/ltc2978
-F: Documentation/hwmon/ltc3815
-F: Documentation/hwmon/max16064
-F: Documentation/hwmon/max20751
-F: Documentation/hwmon/max31785
-F: Documentation/hwmon/max34440
-F: Documentation/hwmon/max8688
-F: Documentation/hwmon/pmbus
-F: Documentation/hwmon/pmbus-core
-F: Documentation/hwmon/tps40422
-F: Documentation/hwmon/ucd9000
-F: Documentation/hwmon/ucd9200
-F: Documentation/hwmon/zl6100
+F: Documentation/hwmon/adm1275.rst
+F: Documentation/hwmon/ibm-cffps.rst
+F: Documentation/hwmon/ir35221.rst
+F: Documentation/hwmon/lm25066.rst
+F: Documentation/hwmon/ltc2978.rst
+F: Documentation/hwmon/ltc3815.rst
+F: Documentation/hwmon/max16064.rst
+F: Documentation/hwmon/max20751.rst
+F: Documentation/hwmon/max31785.rst
+F: Documentation/hwmon/max34440.rst
+F: Documentation/hwmon/max8688.rst
+F: Documentation/hwmon/pmbus.rst
+F: Documentation/hwmon/pmbus-core.rst
+F: Documentation/hwmon/tps40422.rst
+F: Documentation/hwmon/ucd9000.rst
+F: Documentation/hwmon/ucd9200.rst
+F: Documentation/hwmon/zl6100.rst
F: drivers/hwmon/pmbus/
F: include/linux/pmbus.h
@@ -12701,7 +12701,7 @@ M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
L: linux-hwmon@vger.kernel.org
S: Supported
F: Documentation/devicetree/bindings/hwmon/pwm-fan.txt
-F: Documentation/hwmon/pwm-fan
+F: Documentation/hwmon/pwm-fan.rst
F: drivers/hwmon/pwm-fan.c
PWM IR Transmitter
@@ -14366,21 +14366,21 @@ SMM665 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/smm665
+F: Documentation/hwmon/smm665.rst
F: drivers/hwmon/smm665.c
SMSC EMC2103 HARDWARE MONITOR DRIVER
M: Steve Glendinning <steve.glendinning@shawell.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/emc2103
+F: Documentation/hwmon/emc2103.rst
F: drivers/hwmon/emc2103.c
SMSC SCH5627 HARDWARE MONITOR DRIVER
M: Hans de Goede <hdegoede@redhat.com>
L: linux-hwmon@vger.kernel.org
S: Supported
-F: Documentation/hwmon/sch5627
+F: Documentation/hwmon/sch5627.rst
F: drivers/hwmon/sch5627.c
SMSC UFX6000 and UFX7000 USB to VGA DRIVER
@@ -14393,7 +14393,7 @@ SMSC47B397 HARDWARE MONITOR DRIVER
M: Jean Delvare <jdelvare@suse.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/smsc47b397
+F: Documentation/hwmon/smsc47b397.rst
F: drivers/hwmon/smsc47b397.c
SMSC911x ETHERNET DRIVER
@@ -15744,7 +15744,7 @@ TMP401 HARDWARE MONITOR DRIVER
M: Guenter Roeck <linux@roeck-us.net>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/tmp401
+F: Documentation/hwmon/tmp401.rst
F: drivers/hwmon/tmp401.c
TMPFS (SHMEM FILESYSTEM)
@@ -16796,7 +16796,7 @@ VT1211 HARDWARE MONITOR DRIVER
M: Juerg Haefliger <juergh@gmail.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/vt1211
+F: Documentation/hwmon/vt1211.rst
F: drivers/hwmon/vt1211.c
VT8231 HARDWARE MONITOR DRIVER
@@ -16824,14 +16824,14 @@ W83791D HARDWARE MONITORING DRIVER
M: Marc Hulsman <m.hulsman@tudelft.nl>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/w83791d
+F: Documentation/hwmon/w83791d.rst
F: drivers/hwmon/w83791d.c
W83793 HARDWARE MONITORING DRIVER
M: Rudolf Marek <r.marek@assembler.cz>
L: linux-hwmon@vger.kernel.org
S: Maintained
-F: Documentation/hwmon/w83793
+F: Documentation/hwmon/w83793.rst
F: drivers/hwmon/w83793.c
W83795 HARDWARE MONITORING DRIVER
@@ -16940,7 +16940,7 @@ L: patches@opensource.cirrus.com
T: git https://github.com/CirrusLogic/linux-drivers.git
W: https://github.com/CirrusLogic/linux-drivers/wiki
S: Supported
-F: Documentation/hwmon/wm83??
+F: Documentation/hwmon/wm83??.rst
F: Documentation/devicetree/bindings/extcon/extcon-arizona.txt
F: Documentation/devicetree/bindings/regulator/arizona-regulator.txt
F: Documentation/devicetree/bindings/mfd/arizona.txt
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index dedd5febd3aa..470ba66b18b0 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -17,7 +17,7 @@ menuconfig HWMON
To find out which specific driver(s) you need, use the
sensors-detect script from the lm_sensors package. Read
- <file:Documentation/hwmon/userspace-tools> for details.
+ <file:Documentation/hwmon/userspace-tools.rst> for details.
This support can also be built as a module. If so, the module
will be called hwmon.
@@ -59,7 +59,7 @@ config SENSORS_ABITUGURU
chip can be found on Abit uGuru featuring motherboards (most modern
Abit motherboards from before end 2005). For more info and a list
of which motherboards have which revision see
- Documentation/hwmon/abituguru
+ Documentation/hwmon/abituguru.rst
This driver can also be built as a module. If so, the module
will be called abituguru.
@@ -73,7 +73,7 @@ config SENSORS_ABITUGURU3
and their settings is supported. The third revision of the Abit
uGuru chip can be found on recent Abit motherboards (since end
2005). For more info and a list of which motherboards have which
- revision see Documentation/hwmon/abituguru3
+ revision see Documentation/hwmon/abituguru3.rst
This driver can also be built as a module. If so, the module
will be called abituguru3.
@@ -643,7 +643,7 @@ config SENSORS_CORETEMP
help
If you say yes here you get support for the temperature
sensor inside your CPU. Most of the family 6 CPUs
- are supported. Check Documentation/hwmon/coretemp for details.
+ are supported. Check Documentation/hwmon/coretemp.rst for details.
config SENSORS_IT87
tristate "ITE IT87xx and compatibles"
diff --git a/drivers/hwmon/ads7828.c b/drivers/hwmon/ads7828.c
index e6be617e3fb2..03d6e782777a 100644
--- a/drivers/hwmon/ads7828.c
+++ b/drivers/hwmon/ads7828.c
@@ -8,7 +8,7 @@
*
* ADS7830 support, by Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
*
- * For further information, see the Documentation/hwmon/ads7828 file.
+ * For further information, see the Documentation/hwmon/ads7828.rst file.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/drivers/hwmon/max197.c b/drivers/hwmon/max197.c
index 3d9e210beedf..dd6a35219a18 100644
--- a/drivers/hwmon/max197.c
+++ b/drivers/hwmon/max197.c
@@ -8,7 +8,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
- * For further information, see the Documentation/hwmon/max197 file.
+ * For further information, see the Documentation/hwmon/max197.rst file.
*/
#include <linux/kernel.h>
diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
index 39b41e35c2bf..7f4a63959730 100644
--- a/drivers/hwmon/sht15.c
+++ b/drivers/hwmon/sht15.c
@@ -10,7 +10,7 @@
*
* Copyright (c) 2007 Wouter Horre
*
- * For further information, see the Documentation/hwmon/sht15 file.
+ * For further information, see the Documentation/hwmon/sht15.rst file.
*/
#include <linux/interrupt.h>
diff --git a/include/linux/platform_data/ads7828.h b/include/linux/platform_data/ads7828.h
index 3245f45f9d77..a3370a007702 100644
--- a/include/linux/platform_data/ads7828.h
+++ b/include/linux/platform_data/ads7828.h
@@ -4,7 +4,7 @@
* Copyright (c) 2012 Savoir-faire Linux Inc.
* Vivien Didelot <vivien.didelot@savoirfairelinux.com>
*
- * For further information, see the Documentation/hwmon/ads7828 file.
+ * For further information, see the Documentation/hwmon/ads7828.rst file.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
diff --git a/include/linux/platform_data/ds620.h b/include/linux/platform_data/ds620.h
index 6ef58bb77e46..f0ce22a78bb8 100644
--- a/include/linux/platform_data/ds620.h
+++ b/include/linux/platform_data/ds620.h
@@ -14,7 +14,7 @@ struct ds620_platform_data {
* 1 = PO_LOW
* 2 = PO_HIGH
*
- * (see Documentation/hwmon/ds620)
+ * (see Documentation/hwmon/ds620.rst)
*/
int pomode;
};
diff --git a/include/linux/platform_data/ina2xx.h b/include/linux/platform_data/ina2xx.h
index 9f0aa1b48c78..dde59fd3590f 100644
--- a/include/linux/platform_data/ina2xx.h
+++ b/include/linux/platform_data/ina2xx.h
@@ -7,7 +7,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
- * For further information, see the Documentation/hwmon/ina2xx file.
+ * For further information, see the Documentation/hwmon/ina2xx.rst file.
*/
/**
diff --git a/include/linux/platform_data/max197.h b/include/linux/platform_data/max197.h
index 8da8f94ee15c..2bbd0919bc89 100644
--- a/include/linux/platform_data/max197.h
+++ b/include/linux/platform_data/max197.h
@@ -8,7 +8,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
- * For further information, see the Documentation/hwmon/max197 file.
+ * For further information, see the Documentation/hwmon/max197.rst file.
*/
#ifndef _PDATA_MAX197_H
diff --git a/include/linux/platform_data/ntc_thermistor.h b/include/linux/platform_data/ntc_thermistor.h
index ee03d429742b..5fa115d3ea4b 100644
--- a/include/linux/platform_data/ntc_thermistor.h
+++ b/include/linux/platform_data/ntc_thermistor.h
@@ -42,7 +42,7 @@ struct ntc_thermistor_platform_data {
* read_uV()
*
* How to setup pullup_ohm, pulldown_ohm, and connect is
- * described at Documentation/hwmon/ntc_thermistor
+ * described at Documentation/hwmon/ntc_thermistor.rst
*
* pullup/down_ohm: 0 for infinite / not-connected
*
--
2.20.1
^ permalink raw reply related
* Re: [PATCH v2 00/21] Convert hwmon documentation to ReST
From: Mauro Carvalho Chehab @ 2019-04-17 9:47 UTC (permalink / raw)
To: Guenter Roeck
Cc: linux-hwmon, Jean Delvare, linux-aspeed, Linux Doc Mailing List,
Andrew Jeffery, Jonathan Corbet, Liviu Dudau, linux-kernel,
Mauro Carvalho Chehab, Lorenzo Pieralisi, Paul Mackerras,
Joel Stanley, linuxppc-dev, Sudeep Holla, linux-arm-kernel
In-Reply-To: <1d8a4410-4a8c-7b7a-141d-d2495cc66749@roeck-us.net>
Em Tue, 16 Apr 2019 20:49:31 -0700
Guenter Roeck <linux@roeck-us.net> escreveu:
> On 4/16/19 6:58 PM, Mauro Carvalho Chehab wrote:
> > Em Tue, 16 Apr 2019 13:31:14 -0700
> > Guenter Roeck <linux@roeck-us.net> escreveu:
> >
> >> On Tue, Apr 16, 2019 at 02:19:49PM -0600, Jonathan Corbet wrote:
> >>> On Fri, 12 Apr 2019 20:09:16 -0700
> >>> Guenter Roeck <linux@roeck-us.net> wrote:
> >>>
> >>>> The big real-world question is: Is the series good enough for you to accept,
> >>>> or do you expect some level of user/kernel separation ?
> >>>
> >>> I guess it can go in; it's forward progress, even if it doesn't make the
> >>> improvements I would like to see.
> >>>
> >>> The real question, I guess, is who should take it. I've been seeing a
> >>> fair amount of activity on hwmon, so I suspect that the potential for
> >>> conflicts is real. Perhaps things would go smoother if it went through
> >>> your tree?
> >>>
> >> We'll see a number of conflicts, yes. In terms of timing, this is probably
> >> the worst release in the last few years to make such a change. I currently
> >> have 9 patches queued in hwmon-next which touch Documentation/hwmon.
> >> Of course the changes made in those are all not ReST compatible, and I have
> >> no idea what to look out for to make it compatible. So this is going to be
> >> fun (in a negative sense) either way.
> >>
> >> I don't really have a recommendation at this point; I think the best I could
> >> do to take the patches which don't generate conflicts and leave the rest
> >> alone. But that would also be bad, since the new index file would not match
> >> reality. No idea, really, what the best or even a useful approach would be.
> >>
> >> Maybe automated changes like this (assuming they are indeed automated)
> >> can be generated and pushed right after a commit window closes. Would
> >> that by any chance be possible ?
> >
> > No, those patches are hand-maid, but I can surely rebase it on the top of
> > your tree. Is your tree already merged at linux-next, or should I use some
> > other branch/tree for rebase?
> >
>
> linux-next merges hwmon-next. next-20190416 is missing one patch which touches
> Documentation/hwmon, but that should be easy to deal with.
Ok, did a rebase on the top of next-20190417. While re-reading the output
of the html files, I noticed a few minor issues on some tables and fixed.
Thanks,
Mauro
^ permalink raw reply
* Re: [PATCH v3 21/21] docs: hwmon: Add an index file and rename docs to *.rst
From: Liviu Dudau @ 2019-04-17 11:31 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Mark Rutland, Dirk Eibach, linux-aspeed, Linux Doc Mailing List,
Clemens Ladisch, Kamil Debski, linux-kernel, Huang Rui,
Paul Mackerras, Lorenzo Pieralisi, Jonathan Corbet, Joel Stanley,
Guenter Roeck, Steve Glendinning, devicetree, Jean Delvare,
Bartlomiej Zolnierkiewicz, Mauro Carvalho Chehab, Hans de Goede,
Rob Herring, Rudolf Marek, Juerg Haefliger, linux-arm-kernel,
linux-hwmon, Support Opensource, George Joseph, Andreas Werner,
Jim Cromie, patches, Marc Hulsman, Fenghua Yu, Andrew Jeffery,
Sudeep Holla, linuxppc-dev
In-Reply-To: <efbe0a2b5be35026c3a2dbdb9090c4fbd932c9a2.1555494108.git.mchehab+samsung@kernel.org>
On Wed, Apr 17, 2019 at 06:46:29AM -0300, Mauro Carvalho Chehab wrote:
> Now that all files were converted to ReST format, rename them
> and add an index.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
> ---
> .../devicetree/bindings/hwmon/g762.txt | 2 +-
> Documentation/hwmon/{ab8500 => ab8500.rst} | 2 +-
> ...guru-datasheet => abituguru-datasheet.rst} | 0
> .../hwmon/{abituguru => abituguru.rst} | 0
> .../hwmon/{abituguru3 => abituguru3.rst} | 0
> Documentation/hwmon/{abx500 => abx500.rst} | 0
> ...{acpi_power_meter => acpi_power_meter.rst} | 2 +-
> Documentation/hwmon/{ad7314 => ad7314.rst} | 0
> .../hwmon/{adc128d818 => adc128d818.rst} | 0
> Documentation/hwmon/{adm1021 => adm1021.rst} | 0
> Documentation/hwmon/{adm1025 => adm1025.rst} | 0
> Documentation/hwmon/{adm1026 => adm1026.rst} | 0
> Documentation/hwmon/{adm1031 => adm1031.rst} | 0
> Documentation/hwmon/{adm1275 => adm1275.rst} | 4 +-
> Documentation/hwmon/{adm9240 => adm9240.rst} | 0
> Documentation/hwmon/{ads1015 => ads1015.rst} | 0
> Documentation/hwmon/{ads7828 => ads7828.rst} | 0
> Documentation/hwmon/{adt7410 => adt7410.rst} | 0
> Documentation/hwmon/{adt7411 => adt7411.rst} | 0
> Documentation/hwmon/{adt7462 => adt7462.rst} | 1 -
> Documentation/hwmon/{adt7470 => adt7470.rst} | 0
> Documentation/hwmon/{adt7475 => adt7475.rst} | 0
> Documentation/hwmon/{amc6821 => amc6821.rst} | 1 -
> Documentation/hwmon/{asb100 => asb100.rst} | 1 -
> Documentation/hwmon/{asc7621 => asc7621.rst} | 0
> ...{aspeed-pwm-tacho => aspeed-pwm-tacho.rst} | 0
> .../hwmon/{coretemp => coretemp.rst} | 0
> Documentation/hwmon/{da9052 => da9052.rst} | 0
> Documentation/hwmon/{da9055 => da9055.rst} | 0
> Documentation/hwmon/{dme1737 => dme1737.rst} | 0
> Documentation/hwmon/{ds1621 => ds1621.rst} | 0
> Documentation/hwmon/{ds620 => ds620.rst} | 0
> Documentation/hwmon/{emc1403 => emc1403.rst} | 0
> Documentation/hwmon/{emc2103 => emc2103.rst} | 0
> .../hwmon/{emc6w201 => emc6w201.rst} | 0
> Documentation/hwmon/{f71805f => f71805f.rst} | 0
> .../hwmon/{f71882fg => f71882fg.rst} | 0
> .../hwmon/{fam15h_power => fam15h_power.rst} | 0
> .../hwmon/{ftsteutates => ftsteutates.rst} | 0
> Documentation/hwmon/{g760a => g760a.rst} | 0
> Documentation/hwmon/{g762 => g762.rst} | 2 +-
> Documentation/hwmon/{gl518sm => gl518sm.rst} | 0
> Documentation/hwmon/{hih6130 => hih6130.rst} | 0
> ...on-kernel-api.txt => hwmon-kernel-api.rst} | 4 +-
> .../hwmon/{ibm-cffps => ibm-cffps.rst} | 0
> Documentation/hwmon/{ibmaem => ibmaem.rst} | 0
> .../hwmon/{ibmpowernv => ibmpowernv.rst} | 0
> Documentation/hwmon/{ina209 => ina209.rst} | 0
> Documentation/hwmon/{ina2xx => ina2xx.rst} | 2 +-
> Documentation/hwmon/{ina3221 => ina3221.rst} | 0
> Documentation/hwmon/index.rst | 179 ++++++++++++++++++
> Documentation/hwmon/{ir35221 => ir35221.rst} | 0
> Documentation/hwmon/{it87 => it87.rst} | 0
> Documentation/hwmon/{jc42 => jc42.rst} | 0
> Documentation/hwmon/{k10temp => k10temp.rst} | 0
> Documentation/hwmon/{k8temp => k8temp.rst} | 0
> .../hwmon/{lineage-pem => lineage-pem.rst} | 0
> Documentation/hwmon/{lm25066 => lm25066.rst} | 2 +-
> Documentation/hwmon/{lm63 => lm63.rst} | 0
> Documentation/hwmon/{lm70 => lm70.rst} | 0
> Documentation/hwmon/{lm73 => lm73.rst} | 0
> Documentation/hwmon/{lm75 => lm75.rst} | 0
> Documentation/hwmon/{lm77 => lm77.rst} | 0
> Documentation/hwmon/{lm78 => lm78.rst} | 0
> Documentation/hwmon/{lm80 => lm80.rst} | 0
> Documentation/hwmon/{lm83 => lm83.rst} | 0
> Documentation/hwmon/{lm85 => lm85.rst} | 0
> Documentation/hwmon/{lm87 => lm87.rst} | 0
> Documentation/hwmon/{lm90 => lm90.rst} | 0
> Documentation/hwmon/{lm92 => lm92.rst} | 0
> Documentation/hwmon/{lm93 => lm93.rst} | 0
> Documentation/hwmon/{lm95234 => lm95234.rst} | 0
> Documentation/hwmon/{lm95245 => lm95245.rst} | 0
> Documentation/hwmon/{ltc2945 => ltc2945.rst} | 0
> Documentation/hwmon/{ltc2978 => ltc2978.rst} | 0
> Documentation/hwmon/{ltc2990 => ltc2990.rst} | 0
> Documentation/hwmon/{ltc3815 => ltc3815.rst} | 0
> Documentation/hwmon/{ltc4151 => ltc4151.rst} | 0
> Documentation/hwmon/{ltc4215 => ltc4215.rst} | 0
> Documentation/hwmon/{ltc4245 => ltc4245.rst} | 0
> Documentation/hwmon/{ltc4260 => ltc4260.rst} | 0
> Documentation/hwmon/{ltc4261 => ltc4261.rst} | 0
> .../hwmon/{max16064 => max16064.rst} | 2 +-
> .../hwmon/{max16065 => max16065.rst} | 0
> Documentation/hwmon/{max1619 => max1619.rst} | 1 -
> Documentation/hwmon/{max1668 => max1668.rst} | 0
> Documentation/hwmon/{max197 => max197.rst} | 0
> .../hwmon/{max20751 => max20751.rst} | 2 +-
> .../hwmon/{max31722 => max31722.rst} | 0
> .../hwmon/{max31785 => max31785.rst} | 0
> .../hwmon/{max31790 => max31790.rst} | 0
> .../hwmon/{max34440 => max34440.rst} | 2 +-
> Documentation/hwmon/{max6639 => max6639.rst} | 0
> Documentation/hwmon/{max6642 => max6642.rst} | 0
> Documentation/hwmon/{max6650 => max6650.rst} | 1 -
> Documentation/hwmon/{max6697 => max6697.rst} | 0
> Documentation/hwmon/{max8688 => max8688.rst} | 2 +-
> .../hwmon/{mc13783-adc => mc13783-adc.rst} | 0
> Documentation/hwmon/{mcp3021 => mcp3021.rst} | 0
> .../hwmon/{menf21bmc => menf21bmc.rst} | 0
> .../hwmon/{mlxreg-fan => mlxreg-fan.rst} | 0
> Documentation/hwmon/{nct6683 => nct6683.rst} | 0
> Documentation/hwmon/{nct6775 => nct6775.rst} | 0
> Documentation/hwmon/{nct7802 => nct7802.rst} | 0
> Documentation/hwmon/{nct7904 => nct7904.rst} | 0
> .../{npcm750-pwm-fan => npcm750-pwm-fan.rst} | 0
> Documentation/hwmon/{nsa320 => nsa320.rst} | 0
> .../{ntc_thermistor => ntc_thermistor.rst} | 0
> Documentation/hwmon/{occ => occ.rst} | 0
> Documentation/hwmon/{pc87360 => pc87360.rst} | 0
> Documentation/hwmon/{pc87427 => pc87427.rst} | 0
> Documentation/hwmon/{pcf8591 => pcf8591.rst} | 0
> .../hwmon/{pmbus-core => pmbus-core.rst} | 0
> Documentation/hwmon/{pmbus => pmbus.rst} | 0
> .../hwmon/{powr1220 => powr1220.rst} | 0
> Documentation/hwmon/{pwm-fan => pwm-fan.rst} | 0
> ...aspberrypi-hwmon => raspberrypi-hwmon.rst} | 0
> Documentation/hwmon/{sch5627 => sch5627.rst} | 0
> Documentation/hwmon/{sch5636 => sch5636.rst} | 0
> .../hwmon/{scpi-hwmon => scpi-hwmon.rst} | 0
> Documentation/hwmon/{sht15 => sht15.rst} | 0
> Documentation/hwmon/{sht21 => sht21.rst} | 0
> Documentation/hwmon/{sht3x => sht3x.rst} | 0
> Documentation/hwmon/{shtc1 => shtc1.rst} | 0
> Documentation/hwmon/{sis5595 => sis5595.rst} | 1 -
> Documentation/hwmon/{smm665 => smm665.rst} | 0
> .../hwmon/{smsc47b397 => smsc47b397.rst} | 0
> .../hwmon/{smsc47m1 => smsc47m1.rst} | 0
> .../hwmon/{smsc47m192 => smsc47m192.rst} | 0
> ...mitting-patches => submitting-patches.rst} | 6 +-
> .../{sysfs-interface => sysfs-interface.rst} | 0
> Documentation/hwmon/{tc654 => tc654.rst} | 0
> Documentation/hwmon/{tc74 => tc74.rst} | 0
> Documentation/hwmon/{thmc50 => thmc50.rst} | 1 -
> Documentation/hwmon/{tmp102 => tmp102.rst} | 2 +-
> Documentation/hwmon/{tmp103 => tmp103.rst} | 2 +-
> Documentation/hwmon/{tmp108 => tmp108.rst} | 2 +-
> Documentation/hwmon/{tmp401 => tmp401.rst} | 2 +-
> Documentation/hwmon/{tmp421 => tmp421.rst} | 0
> .../hwmon/{tps40422 => tps40422.rst} | 2 +-
> ...4030-madc-hwmon => twl4030-madc-hwmon.rst} | 0
> Documentation/hwmon/{ucd9000 => ucd9000.rst} | 4 +-
> Documentation/hwmon/{ucd9200 => ucd9200.rst} | 4 +-
> .../{userspace-tools => userspace-tools.rst} | 0
> .../hwmon/{vexpress => vexpress.rst} | 0
For the vexpress part:
Acked-by: Liviu Dudau <liviu.dudau@arm.com>
Best regards,
Liviu
> Documentation/hwmon/{via686a => via686a.rst} | 0
> Documentation/hwmon/{vt1211 => vt1211.rst} | 0
> .../hwmon/{w83627ehf => w83627ehf.rst} | 0
> .../hwmon/{w83627hf => w83627hf.rst} | 0
> Documentation/hwmon/{w83773g => w83773g.rst} | 0
> Documentation/hwmon/{w83781d => w83781d.rst} | 0
> Documentation/hwmon/{w83791d => w83791d.rst} | 2 +-
> Documentation/hwmon/{w83792d => w83792d.rst} | 0
> Documentation/hwmon/{w83793 => w83793.rst} | 0
> Documentation/hwmon/{w83795 => w83795.rst} | 0
> .../hwmon/{w83l785ts => w83l785ts.rst} | 0
> .../hwmon/{w83l786ng => w83l786ng.rst} | 0
> Documentation/hwmon/{wm831x => wm831x.rst} | 0
> Documentation/hwmon/{wm8350 => wm8350.rst} | 0
> .../hwmon/{xgene-hwmon => xgene-hwmon.rst} | 0
> Documentation/hwmon/{zl6100 => zl6100.rst} | 2 +-
> Documentation/index.rst | 1 +
> Documentation/thermal/sysfs-api.txt | 2 +-
> MAINTAINERS | 108 +++++------
> drivers/hwmon/Kconfig | 8 +-
> drivers/hwmon/ads7828.c | 2 +-
> drivers/hwmon/max197.c | 2 +-
> drivers/hwmon/sht15.c | 2 +-
> include/linux/platform_data/ads7828.h | 2 +-
> include/linux/platform_data/ds620.h | 2 +-
> include/linux/platform_data/ina2xx.h | 2 +-
> include/linux/platform_data/max197.h | 2 +-
> include/linux/platform_data/ntc_thermistor.h | 2 +-
> 173 files changed, 275 insertions(+), 102 deletions(-)
> rename Documentation/hwmon/{ab8500 => ab8500.rst} (86%)
> rename Documentation/hwmon/{abituguru-datasheet => abituguru-datasheet.rst} (100%)
> rename Documentation/hwmon/{abituguru => abituguru.rst} (100%)
> rename Documentation/hwmon/{abituguru3 => abituguru3.rst} (100%)
> rename Documentation/hwmon/{abx500 => abx500.rst} (100%)
> rename Documentation/hwmon/{acpi_power_meter => acpi_power_meter.rst} (97%)
> rename Documentation/hwmon/{ad7314 => ad7314.rst} (100%)
> rename Documentation/hwmon/{adc128d818 => adc128d818.rst} (100%)
> rename Documentation/hwmon/{adm1021 => adm1021.rst} (100%)
> rename Documentation/hwmon/{adm1025 => adm1025.rst} (100%)
> rename Documentation/hwmon/{adm1026 => adm1026.rst} (100%)
> rename Documentation/hwmon/{adm1031 => adm1031.rst} (100%)
> rename Documentation/hwmon/{adm1275 => adm1275.rst} (97%)
> rename Documentation/hwmon/{adm9240 => adm9240.rst} (100%)
> rename Documentation/hwmon/{ads1015 => ads1015.rst} (100%)
> rename Documentation/hwmon/{ads7828 => ads7828.rst} (100%)
> rename Documentation/hwmon/{adt7410 => adt7410.rst} (100%)
> rename Documentation/hwmon/{adt7411 => adt7411.rst} (100%)
> rename Documentation/hwmon/{adt7462 => adt7462.rst} (99%)
> rename Documentation/hwmon/{adt7470 => adt7470.rst} (100%)
> rename Documentation/hwmon/{adt7475 => adt7475.rst} (100%)
> rename Documentation/hwmon/{amc6821 => amc6821.rst} (99%)
> rename Documentation/hwmon/{asb100 => asb100.rst} (99%)
> rename Documentation/hwmon/{asc7621 => asc7621.rst} (100%)
> rename Documentation/hwmon/{aspeed-pwm-tacho => aspeed-pwm-tacho.rst} (100%)
> rename Documentation/hwmon/{coretemp => coretemp.rst} (100%)
> rename Documentation/hwmon/{da9052 => da9052.rst} (100%)
> rename Documentation/hwmon/{da9055 => da9055.rst} (100%)
> rename Documentation/hwmon/{dme1737 => dme1737.rst} (100%)
> rename Documentation/hwmon/{ds1621 => ds1621.rst} (100%)
> rename Documentation/hwmon/{ds620 => ds620.rst} (100%)
> rename Documentation/hwmon/{emc1403 => emc1403.rst} (100%)
> rename Documentation/hwmon/{emc2103 => emc2103.rst} (100%)
> rename Documentation/hwmon/{emc6w201 => emc6w201.rst} (100%)
> rename Documentation/hwmon/{f71805f => f71805f.rst} (100%)
> rename Documentation/hwmon/{f71882fg => f71882fg.rst} (100%)
> rename Documentation/hwmon/{fam15h_power => fam15h_power.rst} (100%)
> rename Documentation/hwmon/{ftsteutates => ftsteutates.rst} (100%)
> rename Documentation/hwmon/{g760a => g760a.rst} (100%)
> rename Documentation/hwmon/{g762 => g762.rst} (97%)
> rename Documentation/hwmon/{gl518sm => gl518sm.rst} (100%)
> rename Documentation/hwmon/{hih6130 => hih6130.rst} (100%)
> rename Documentation/hwmon/{hwmon-kernel-api.txt => hwmon-kernel-api.rst} (99%)
> rename Documentation/hwmon/{ibm-cffps => ibm-cffps.rst} (100%)
> rename Documentation/hwmon/{ibmaem => ibmaem.rst} (100%)
> rename Documentation/hwmon/{ibmpowernv => ibmpowernv.rst} (100%)
> rename Documentation/hwmon/{ina209 => ina209.rst} (100%)
> rename Documentation/hwmon/{ina2xx => ina2xx.rst} (97%)
> rename Documentation/hwmon/{ina3221 => ina3221.rst} (100%)
> create mode 100644 Documentation/hwmon/index.rst
> rename Documentation/hwmon/{ir35221 => ir35221.rst} (100%)
> rename Documentation/hwmon/{it87 => it87.rst} (100%)
> rename Documentation/hwmon/{jc42 => jc42.rst} (100%)
> rename Documentation/hwmon/{k10temp => k10temp.rst} (100%)
> rename Documentation/hwmon/{k8temp => k8temp.rst} (100%)
> rename Documentation/hwmon/{lineage-pem => lineage-pem.rst} (100%)
> rename Documentation/hwmon/{lm25066 => lm25066.rst} (97%)
> rename Documentation/hwmon/{lm63 => lm63.rst} (100%)
> rename Documentation/hwmon/{lm70 => lm70.rst} (100%)
> rename Documentation/hwmon/{lm73 => lm73.rst} (100%)
> rename Documentation/hwmon/{lm75 => lm75.rst} (100%)
> rename Documentation/hwmon/{lm77 => lm77.rst} (100%)
> rename Documentation/hwmon/{lm78 => lm78.rst} (100%)
> rename Documentation/hwmon/{lm80 => lm80.rst} (100%)
> rename Documentation/hwmon/{lm83 => lm83.rst} (100%)
> rename Documentation/hwmon/{lm85 => lm85.rst} (100%)
> rename Documentation/hwmon/{lm87 => lm87.rst} (100%)
> rename Documentation/hwmon/{lm90 => lm90.rst} (100%)
> rename Documentation/hwmon/{lm92 => lm92.rst} (100%)
> rename Documentation/hwmon/{lm93 => lm93.rst} (100%)
> rename Documentation/hwmon/{lm95234 => lm95234.rst} (100%)
> rename Documentation/hwmon/{lm95245 => lm95245.rst} (100%)
> rename Documentation/hwmon/{ltc2945 => ltc2945.rst} (100%)
> rename Documentation/hwmon/{ltc2978 => ltc2978.rst} (100%)
> rename Documentation/hwmon/{ltc2990 => ltc2990.rst} (100%)
> rename Documentation/hwmon/{ltc3815 => ltc3815.rst} (100%)
> rename Documentation/hwmon/{ltc4151 => ltc4151.rst} (100%)
> rename Documentation/hwmon/{ltc4215 => ltc4215.rst} (100%)
> rename Documentation/hwmon/{ltc4245 => ltc4245.rst} (100%)
> rename Documentation/hwmon/{ltc4260 => ltc4260.rst} (100%)
> rename Documentation/hwmon/{ltc4261 => ltc4261.rst} (100%)
> rename Documentation/hwmon/{max16064 => max16064.rst} (96%)
> rename Documentation/hwmon/{max16065 => max16065.rst} (100%)
> rename Documentation/hwmon/{max1619 => max1619.rst} (99%)
> rename Documentation/hwmon/{max1668 => max1668.rst} (100%)
> rename Documentation/hwmon/{max197 => max197.rst} (100%)
> rename Documentation/hwmon/{max20751 => max20751.rst} (96%)
> rename Documentation/hwmon/{max31722 => max31722.rst} (100%)
> rename Documentation/hwmon/{max31785 => max31785.rst} (100%)
> rename Documentation/hwmon/{max31790 => max31790.rst} (100%)
> rename Documentation/hwmon/{max34440 => max34440.rst} (98%)
> rename Documentation/hwmon/{max6639 => max6639.rst} (100%)
> rename Documentation/hwmon/{max6642 => max6642.rst} (100%)
> rename Documentation/hwmon/{max6650 => max6650.rst} (99%)
> rename Documentation/hwmon/{max6697 => max6697.rst} (100%)
> rename Documentation/hwmon/{max8688 => max8688.rst} (97%)
> rename Documentation/hwmon/{mc13783-adc => mc13783-adc.rst} (100%)
> rename Documentation/hwmon/{mcp3021 => mcp3021.rst} (100%)
> rename Documentation/hwmon/{menf21bmc => menf21bmc.rst} (100%)
> rename Documentation/hwmon/{mlxreg-fan => mlxreg-fan.rst} (100%)
> rename Documentation/hwmon/{nct6683 => nct6683.rst} (100%)
> rename Documentation/hwmon/{nct6775 => nct6775.rst} (100%)
> rename Documentation/hwmon/{nct7802 => nct7802.rst} (100%)
> rename Documentation/hwmon/{nct7904 => nct7904.rst} (100%)
> rename Documentation/hwmon/{npcm750-pwm-fan => npcm750-pwm-fan.rst} (100%)
> rename Documentation/hwmon/{nsa320 => nsa320.rst} (100%)
> rename Documentation/hwmon/{ntc_thermistor => ntc_thermistor.rst} (100%)
> rename Documentation/hwmon/{occ => occ.rst} (100%)
> rename Documentation/hwmon/{pc87360 => pc87360.rst} (100%)
> rename Documentation/hwmon/{pc87427 => pc87427.rst} (100%)
> rename Documentation/hwmon/{pcf8591 => pcf8591.rst} (100%)
> rename Documentation/hwmon/{pmbus-core => pmbus-core.rst} (100%)
> rename Documentation/hwmon/{pmbus => pmbus.rst} (100%)
> rename Documentation/hwmon/{powr1220 => powr1220.rst} (100%)
> rename Documentation/hwmon/{pwm-fan => pwm-fan.rst} (100%)
> rename Documentation/hwmon/{raspberrypi-hwmon => raspberrypi-hwmon.rst} (100%)
> rename Documentation/hwmon/{sch5627 => sch5627.rst} (100%)
> rename Documentation/hwmon/{sch5636 => sch5636.rst} (100%)
> rename Documentation/hwmon/{scpi-hwmon => scpi-hwmon.rst} (100%)
> rename Documentation/hwmon/{sht15 => sht15.rst} (100%)
> rename Documentation/hwmon/{sht21 => sht21.rst} (100%)
> rename Documentation/hwmon/{sht3x => sht3x.rst} (100%)
> rename Documentation/hwmon/{shtc1 => shtc1.rst} (100%)
> rename Documentation/hwmon/{sis5595 => sis5595.rst} (99%)
> rename Documentation/hwmon/{smm665 => smm665.rst} (100%)
> rename Documentation/hwmon/{smsc47b397 => smsc47b397.rst} (100%)
> rename Documentation/hwmon/{smsc47m1 => smsc47m1.rst} (100%)
> rename Documentation/hwmon/{smsc47m192 => smsc47m192.rst} (100%)
> rename Documentation/hwmon/{submitting-patches => submitting-patches.rst} (98%)
> rename Documentation/hwmon/{sysfs-interface => sysfs-interface.rst} (100%)
> rename Documentation/hwmon/{tc654 => tc654.rst} (100%)
> rename Documentation/hwmon/{tc74 => tc74.rst} (100%)
> rename Documentation/hwmon/{thmc50 => thmc50.rst} (99%)
> rename Documentation/hwmon/{tmp102 => tmp102.rst} (93%)
> rename Documentation/hwmon/{tmp103 => tmp103.rst} (92%)
> rename Documentation/hwmon/{tmp108 => tmp108.rst} (95%)
> rename Documentation/hwmon/{tmp401 => tmp401.rst} (97%)
> rename Documentation/hwmon/{tmp421 => tmp421.rst} (100%)
> rename Documentation/hwmon/{tps40422 => tps40422.rst} (96%)
> rename Documentation/hwmon/{twl4030-madc-hwmon => twl4030-madc-hwmon.rst} (100%)
> rename Documentation/hwmon/{ucd9000 => ucd9000.rst} (97%)
> rename Documentation/hwmon/{ucd9200 => ucd9200.rst} (97%)
> rename Documentation/hwmon/{userspace-tools => userspace-tools.rst} (100%)
> rename Documentation/hwmon/{vexpress => vexpress.rst} (100%)
> rename Documentation/hwmon/{via686a => via686a.rst} (100%)
> rename Documentation/hwmon/{vt1211 => vt1211.rst} (100%)
> rename Documentation/hwmon/{w83627ehf => w83627ehf.rst} (100%)
> rename Documentation/hwmon/{w83627hf => w83627hf.rst} (100%)
> rename Documentation/hwmon/{w83773g => w83773g.rst} (100%)
> rename Documentation/hwmon/{w83781d => w83781d.rst} (100%)
> rename Documentation/hwmon/{w83791d => w83791d.rst} (99%)
> rename Documentation/hwmon/{w83792d => w83792d.rst} (100%)
> rename Documentation/hwmon/{w83793 => w83793.rst} (100%)
> rename Documentation/hwmon/{w83795 => w83795.rst} (100%)
> rename Documentation/hwmon/{w83l785ts => w83l785ts.rst} (100%)
> rename Documentation/hwmon/{w83l786ng => w83l786ng.rst} (100%)
> rename Documentation/hwmon/{wm831x => wm831x.rst} (100%)
> rename Documentation/hwmon/{wm8350 => wm8350.rst} (100%)
> rename Documentation/hwmon/{xgene-hwmon => xgene-hwmon.rst} (100%)
> rename Documentation/hwmon/{zl6100 => zl6100.rst} (98%)
>
> diff --git a/Documentation/devicetree/bindings/hwmon/g762.txt b/Documentation/devicetree/bindings/hwmon/g762.txt
> index 25cc6d8ee575..6d154c4923de 100644
> --- a/Documentation/devicetree/bindings/hwmon/g762.txt
> +++ b/Documentation/devicetree/bindings/hwmon/g762.txt
> @@ -21,7 +21,7 @@ If an optional property is not set in .dts file, then current value is kept
> unmodified (e.g. u-boot installed value).
>
> Additional information on operational parameters for the device is available
> -in Documentation/hwmon/g762. A detailed datasheet for the device is available
> +in Documentation/hwmon/g762.rst. A detailed datasheet for the device is available
> at http://natisbad.org/NAS/refs/GMT_EDS-762_763-080710-0.2.pdf.
>
> Example g762 node:
> diff --git a/Documentation/hwmon/ab8500 b/Documentation/hwmon/ab8500.rst
> similarity index 86%
> rename from Documentation/hwmon/ab8500
> rename to Documentation/hwmon/ab8500.rst
> index d87c61151239..33f93a9cec04 100644
> --- a/Documentation/hwmon/ab8500
> +++ b/Documentation/hwmon/ab8500.rst
> @@ -18,7 +18,7 @@ Authors:
> Description
> -----------
>
> -See also Documentation/hwmon/abx500. This is the ST-Ericsson AB8500 specific
> +See also Documentation/hwmon/abx500.rst. This is the ST-Ericsson AB8500 specific
> driver.
>
> Currently only the AB8500 internal sensor and one external sensor for battery
> diff --git a/Documentation/hwmon/abituguru-datasheet b/Documentation/hwmon/abituguru-datasheet.rst
> similarity index 100%
> rename from Documentation/hwmon/abituguru-datasheet
> rename to Documentation/hwmon/abituguru-datasheet.rst
> diff --git a/Documentation/hwmon/abituguru b/Documentation/hwmon/abituguru.rst
> similarity index 100%
> rename from Documentation/hwmon/abituguru
> rename to Documentation/hwmon/abituguru.rst
> diff --git a/Documentation/hwmon/abituguru3 b/Documentation/hwmon/abituguru3.rst
> similarity index 100%
> rename from Documentation/hwmon/abituguru3
> rename to Documentation/hwmon/abituguru3.rst
> diff --git a/Documentation/hwmon/abx500 b/Documentation/hwmon/abx500.rst
> similarity index 100%
> rename from Documentation/hwmon/abx500
> rename to Documentation/hwmon/abx500.rst
> diff --git a/Documentation/hwmon/acpi_power_meter b/Documentation/hwmon/acpi_power_meter.rst
> similarity index 97%
> rename from Documentation/hwmon/acpi_power_meter
> rename to Documentation/hwmon/acpi_power_meter.rst
> index 7665ca6ba957..4a0941ade0ca 100644
> --- a/Documentation/hwmon/acpi_power_meter
> +++ b/Documentation/hwmon/acpi_power_meter.rst
> @@ -21,7 +21,7 @@ the ACPI 4.0 spec (Chapter 10.4). These devices have a simple set of
> features--a power meter that returns average power use over a configurable
> interval, an optional capping mechanism, and a couple of trip points. The
> sysfs interface conforms with the specification outlined in the "Power" section
> -of Documentation/hwmon/sysfs-interface.
> +of Documentation/hwmon/sysfs-interface.rst.
>
> Special Features
> ----------------
> diff --git a/Documentation/hwmon/ad7314 b/Documentation/hwmon/ad7314.rst
> similarity index 100%
> rename from Documentation/hwmon/ad7314
> rename to Documentation/hwmon/ad7314.rst
> diff --git a/Documentation/hwmon/adc128d818 b/Documentation/hwmon/adc128d818.rst
> similarity index 100%
> rename from Documentation/hwmon/adc128d818
> rename to Documentation/hwmon/adc128d818.rst
> diff --git a/Documentation/hwmon/adm1021 b/Documentation/hwmon/adm1021.rst
> similarity index 100%
> rename from Documentation/hwmon/adm1021
> rename to Documentation/hwmon/adm1021.rst
> diff --git a/Documentation/hwmon/adm1025 b/Documentation/hwmon/adm1025.rst
> similarity index 100%
> rename from Documentation/hwmon/adm1025
> rename to Documentation/hwmon/adm1025.rst
> diff --git a/Documentation/hwmon/adm1026 b/Documentation/hwmon/adm1026.rst
> similarity index 100%
> rename from Documentation/hwmon/adm1026
> rename to Documentation/hwmon/adm1026.rst
> diff --git a/Documentation/hwmon/adm1031 b/Documentation/hwmon/adm1031.rst
> similarity index 100%
> rename from Documentation/hwmon/adm1031
> rename to Documentation/hwmon/adm1031.rst
> diff --git a/Documentation/hwmon/adm1275 b/Documentation/hwmon/adm1275.rst
> similarity index 97%
> rename from Documentation/hwmon/adm1275
> rename to Documentation/hwmon/adm1275.rst
> index 5c5860011d6e..9a1913e5b4d9 100644
> --- a/Documentation/hwmon/adm1275
> +++ b/Documentation/hwmon/adm1275.rst
> @@ -68,7 +68,7 @@ integrated 12 bit analog-to-digital converter (ADC), accessed using a
> PMBus interface.
>
> The driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> @@ -90,7 +90,7 @@ Platform data support
> ---------------------
>
> The driver supports standard PMBus driver platform data. Please see
> -Documentation/hwmon/pmbus for details.
> +Documentation/hwmon/pmbus.rst for details.
>
>
> Sysfs entries
> diff --git a/Documentation/hwmon/adm9240 b/Documentation/hwmon/adm9240.rst
> similarity index 100%
> rename from Documentation/hwmon/adm9240
> rename to Documentation/hwmon/adm9240.rst
> diff --git a/Documentation/hwmon/ads1015 b/Documentation/hwmon/ads1015.rst
> similarity index 100%
> rename from Documentation/hwmon/ads1015
> rename to Documentation/hwmon/ads1015.rst
> diff --git a/Documentation/hwmon/ads7828 b/Documentation/hwmon/ads7828.rst
> similarity index 100%
> rename from Documentation/hwmon/ads7828
> rename to Documentation/hwmon/ads7828.rst
> diff --git a/Documentation/hwmon/adt7410 b/Documentation/hwmon/adt7410.rst
> similarity index 100%
> rename from Documentation/hwmon/adt7410
> rename to Documentation/hwmon/adt7410.rst
> diff --git a/Documentation/hwmon/adt7411 b/Documentation/hwmon/adt7411.rst
> similarity index 100%
> rename from Documentation/hwmon/adt7411
> rename to Documentation/hwmon/adt7411.rst
> diff --git a/Documentation/hwmon/adt7462 b/Documentation/hwmon/adt7462.rst
> similarity index 99%
> rename from Documentation/hwmon/adt7462
> rename to Documentation/hwmon/adt7462.rst
> index a7a831118d32..139e19696188 100644
> --- a/Documentation/hwmon/adt7462
> +++ b/Documentation/hwmon/adt7462.rst
> @@ -68,4 +68,3 @@ The ADT7462 will scale the pwm between the lower and higher pwm speed when
> the temperature is between the two temperature boundaries. PWM values range
> from 0 (off) to 255 (full speed). Fan speed will be set to maximum when the
> temperature sensor associated with the PWM control exceeds temp#_max.
> -
> diff --git a/Documentation/hwmon/adt7470 b/Documentation/hwmon/adt7470.rst
> similarity index 100%
> rename from Documentation/hwmon/adt7470
> rename to Documentation/hwmon/adt7470.rst
> diff --git a/Documentation/hwmon/adt7475 b/Documentation/hwmon/adt7475.rst
> similarity index 100%
> rename from Documentation/hwmon/adt7475
> rename to Documentation/hwmon/adt7475.rst
> diff --git a/Documentation/hwmon/amc6821 b/Documentation/hwmon/amc6821.rst
> similarity index 99%
> rename from Documentation/hwmon/amc6821
> rename to Documentation/hwmon/amc6821.rst
> index d10eabcbc0f3..5ddb2849da90 100644
> --- a/Documentation/hwmon/amc6821
> +++ b/Documentation/hwmon/amc6821.rst
> @@ -106,4 +106,3 @@ different settings, you can set the following parameters:
>
> - init=1,
> - pwminv: 0 default pwm output, 1 inverts pwm output.
> -
> diff --git a/Documentation/hwmon/asb100 b/Documentation/hwmon/asb100.rst
> similarity index 99%
> rename from Documentation/hwmon/asb100
> rename to Documentation/hwmon/asb100.rst
> index 311d9f7b6926..c2d5f97085fe 100644
> --- a/Documentation/hwmon/asb100
> +++ b/Documentation/hwmon/asb100.rst
> @@ -71,4 +71,3 @@ TODO:
> * Experiment with temp. sensor types.
> * Are there really 13 voltage inputs? Probably not...
> * Cleanups, no doubt...
> -
> diff --git a/Documentation/hwmon/asc7621 b/Documentation/hwmon/asc7621.rst
> similarity index 100%
> rename from Documentation/hwmon/asc7621
> rename to Documentation/hwmon/asc7621.rst
> diff --git a/Documentation/hwmon/aspeed-pwm-tacho b/Documentation/hwmon/aspeed-pwm-tacho.rst
> similarity index 100%
> rename from Documentation/hwmon/aspeed-pwm-tacho
> rename to Documentation/hwmon/aspeed-pwm-tacho.rst
> diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp.rst
> similarity index 100%
> rename from Documentation/hwmon/coretemp
> rename to Documentation/hwmon/coretemp.rst
> diff --git a/Documentation/hwmon/da9052 b/Documentation/hwmon/da9052.rst
> similarity index 100%
> rename from Documentation/hwmon/da9052
> rename to Documentation/hwmon/da9052.rst
> diff --git a/Documentation/hwmon/da9055 b/Documentation/hwmon/da9055.rst
> similarity index 100%
> rename from Documentation/hwmon/da9055
> rename to Documentation/hwmon/da9055.rst
> diff --git a/Documentation/hwmon/dme1737 b/Documentation/hwmon/dme1737.rst
> similarity index 100%
> rename from Documentation/hwmon/dme1737
> rename to Documentation/hwmon/dme1737.rst
> diff --git a/Documentation/hwmon/ds1621 b/Documentation/hwmon/ds1621.rst
> similarity index 100%
> rename from Documentation/hwmon/ds1621
> rename to Documentation/hwmon/ds1621.rst
> diff --git a/Documentation/hwmon/ds620 b/Documentation/hwmon/ds620.rst
> similarity index 100%
> rename from Documentation/hwmon/ds620
> rename to Documentation/hwmon/ds620.rst
> diff --git a/Documentation/hwmon/emc1403 b/Documentation/hwmon/emc1403.rst
> similarity index 100%
> rename from Documentation/hwmon/emc1403
> rename to Documentation/hwmon/emc1403.rst
> diff --git a/Documentation/hwmon/emc2103 b/Documentation/hwmon/emc2103.rst
> similarity index 100%
> rename from Documentation/hwmon/emc2103
> rename to Documentation/hwmon/emc2103.rst
> diff --git a/Documentation/hwmon/emc6w201 b/Documentation/hwmon/emc6w201.rst
> similarity index 100%
> rename from Documentation/hwmon/emc6w201
> rename to Documentation/hwmon/emc6w201.rst
> diff --git a/Documentation/hwmon/f71805f b/Documentation/hwmon/f71805f.rst
> similarity index 100%
> rename from Documentation/hwmon/f71805f
> rename to Documentation/hwmon/f71805f.rst
> diff --git a/Documentation/hwmon/f71882fg b/Documentation/hwmon/f71882fg.rst
> similarity index 100%
> rename from Documentation/hwmon/f71882fg
> rename to Documentation/hwmon/f71882fg.rst
> diff --git a/Documentation/hwmon/fam15h_power b/Documentation/hwmon/fam15h_power.rst
> similarity index 100%
> rename from Documentation/hwmon/fam15h_power
> rename to Documentation/hwmon/fam15h_power.rst
> diff --git a/Documentation/hwmon/ftsteutates b/Documentation/hwmon/ftsteutates.rst
> similarity index 100%
> rename from Documentation/hwmon/ftsteutates
> rename to Documentation/hwmon/ftsteutates.rst
> diff --git a/Documentation/hwmon/g760a b/Documentation/hwmon/g760a.rst
> similarity index 100%
> rename from Documentation/hwmon/g760a
> rename to Documentation/hwmon/g760a.rst
> diff --git a/Documentation/hwmon/g762 b/Documentation/hwmon/g762.rst
> similarity index 97%
> rename from Documentation/hwmon/g762
> rename to Documentation/hwmon/g762.rst
> index 54574e26df21..0371b3365c48 100644
> --- a/Documentation/hwmon/g762
> +++ b/Documentation/hwmon/g762.rst
> @@ -7,7 +7,7 @@ modes - PWM or DC - are supported by the device.
>
> For additional information, a detailed datasheet is available at
> http://natisbad.org/NAS/ref/GMT_EDS-762_763-080710-0.2.pdf. sysfs
> -bindings are described in Documentation/hwmon/sysfs-interface.
> +bindings are described in Documentation/hwmon/sysfs-interface.rst.
>
> The following entries are available to the user in a subdirectory of
> /sys/bus/i2c/drivers/g762/ to control the operation of the device.
> diff --git a/Documentation/hwmon/gl518sm b/Documentation/hwmon/gl518sm.rst
> similarity index 100%
> rename from Documentation/hwmon/gl518sm
> rename to Documentation/hwmon/gl518sm.rst
> diff --git a/Documentation/hwmon/hih6130 b/Documentation/hwmon/hih6130.rst
> similarity index 100%
> rename from Documentation/hwmon/hih6130
> rename to Documentation/hwmon/hih6130.rst
> diff --git a/Documentation/hwmon/hwmon-kernel-api.txt b/Documentation/hwmon/hwmon-kernel-api.rst
> similarity index 99%
> rename from Documentation/hwmon/hwmon-kernel-api.txt
> rename to Documentation/hwmon/hwmon-kernel-api.rst
> index b347b959fcda..c41eb6108103 100644
> --- a/Documentation/hwmon/hwmon-kernel-api.txt
> +++ b/Documentation/hwmon/hwmon-kernel-api.rst
> @@ -12,10 +12,10 @@ drivers that want to use the hardware monitoring framework.
> This document does not describe what a hardware monitoring (hwmon) Driver or
> Device is. It also does not describe the API which can be used by user space
> to communicate with a hardware monitoring device. If you want to know this
> -then please read the following file: Documentation/hwmon/sysfs-interface.
> +then please read the following file: Documentation/hwmon/sysfs-interface.rst.
>
> For additional guidelines on how to write and improve hwmon drivers, please
> -also read Documentation/hwmon/submitting-patches.
> +also read Documentation/hwmon/submitting-patches.rst.
>
> The API
> -------
> diff --git a/Documentation/hwmon/ibm-cffps b/Documentation/hwmon/ibm-cffps.rst
> similarity index 100%
> rename from Documentation/hwmon/ibm-cffps
> rename to Documentation/hwmon/ibm-cffps.rst
> diff --git a/Documentation/hwmon/ibmaem b/Documentation/hwmon/ibmaem.rst
> similarity index 100%
> rename from Documentation/hwmon/ibmaem
> rename to Documentation/hwmon/ibmaem.rst
> diff --git a/Documentation/hwmon/ibmpowernv b/Documentation/hwmon/ibmpowernv.rst
> similarity index 100%
> rename from Documentation/hwmon/ibmpowernv
> rename to Documentation/hwmon/ibmpowernv.rst
> diff --git a/Documentation/hwmon/ina209 b/Documentation/hwmon/ina209.rst
> similarity index 100%
> rename from Documentation/hwmon/ina209
> rename to Documentation/hwmon/ina209.rst
> diff --git a/Documentation/hwmon/ina2xx b/Documentation/hwmon/ina2xx.rst
> similarity index 97%
> rename from Documentation/hwmon/ina2xx
> rename to Documentation/hwmon/ina2xx.rst
> index 95badf9c396f..94b9a260c518 100644
> --- a/Documentation/hwmon/ina2xx
> +++ b/Documentation/hwmon/ina2xx.rst
> @@ -78,7 +78,7 @@ refer to the Documentation/devicetree/bindings/hwmon/ina2xx.txt for bindings
> if the device tree is used.
>
> Additionally ina226 supports update_interval attribute as described in
> -Documentation/hwmon/sysfs-interface. Internally the interval is the sum of
> +Documentation/hwmon/sysfs-interface.rst. Internally the interval is the sum of
> bus and shunt voltage conversion times multiplied by the averaging rate. We
> don't touch the conversion times and only modify the number of averages. The
> lower limit of the update_interval is 2 ms, the upper limit is 2253 ms.
> diff --git a/Documentation/hwmon/ina3221 b/Documentation/hwmon/ina3221.rst
> similarity index 100%
> rename from Documentation/hwmon/ina3221
> rename to Documentation/hwmon/ina3221.rst
> diff --git a/Documentation/hwmon/index.rst b/Documentation/hwmon/index.rst
> new file mode 100644
> index 000000000000..893804414510
> --- /dev/null
> +++ b/Documentation/hwmon/index.rst
> @@ -0,0 +1,179 @@
> +=========================
> +Linux Hardware Monitoring
> +=========================
> +
> +.. toctree::
> + :maxdepth: 1
> +
> + hwmon-kernel-api.rst
> + pmbus-core.rst
> + submitting-patches.rst
> + sysfs-interface.rst
> + userspace-tools.rst
> +
> +Hardware Monitoring Kernel Drivers
> +==================================
> +
> +.. toctree::
> + :maxdepth: 1
> +
> + ab8500.rst
> + abituguru.rst
> + abituguru3.rst
> + abx500.rst
> + acpi_power_meter.rst
> + ad7314.rst
> + adc128d818.rst
> + adm1021.rst
> + adm1025.rst
> + adm1026.rst
> + adm1031.rst
> + adm1275.rst
> + adm9240.rst
> + ads1015.rst
> + ads7828.rst
> + adt7410.rst
> + adt7411.rst
> + adt7462.rst
> + adt7470.rst
> + adt7475.rst
> + amc6821.rst
> + asb100.rst
> + asc7621.rst
> + aspeed-pwm-tacho.rst
> + coretemp.rst
> + da9052.rst
> + da9055.rst
> + dme1737.rst
> + ds1621.rst
> + ds620.rst
> + emc1403.rst
> + emc2103.rst
> + emc6w201.rst
> + f71805f.rst
> + f71882fg.rst
> + fam15h_power.rst
> + ftsteutates.rst
> + g760a.rst
> + g762.rst
> + gl518sm.rst
> + hih6130.rst
> + ibmaem.rst
> + ibm-cffps.rst
> + ibmpowernv.rst
> + ina209.rst
> + ina2xx.rst
> + ina3221.rst
> + ir35221.rst
> + it87.rst
> + jc42.rst
> + k10temp.rst
> + k8temp.rst
> + lineage-pem.rst
> + lm25066.rst
> + lm63.rst
> + lm70.rst
> + lm73.rst
> + lm75.rst
> + lm77.rst
> + lm78.rst
> + lm80.rst
> + lm83.rst
> + lm85.rst
> + lm87.rst
> + lm90.rst
> + lm92.rst
> + lm93.rst
> + lm95234.rst
> + lm95245.rst
> + ltc2945.rst
> + ltc2978.rst
> + ltc2990.rst
> + ltc3815.rst
> + ltc4151.rst
> + ltc4215.rst
> + ltc4245.rst
> + ltc4260.rst
> + ltc4261.rst
> + max16064.rst
> + max16065.rst
> + max1619.rst
> + max1668.rst
> + max197.rst
> + max20751.rst
> + max31722.rst
> + max31785.rst
> + max31790.rst
> + max34440.rst
> + max6639.rst
> + max6642.rst
> + max6650.rst
> + max6697.rst
> + max8688.rst
> + mc13783-adc.rst
> + mcp3021.rst
> + menf21bmc.rst
> + mlxreg-fan.rst
> + nct6683.rst
> + nct6775.rst
> + nct7802.rst
> + nct7904.rst
> + npcm750-pwm-fan.rst
> + nsa320.rst
> + ntc_thermistor.rst
> + occ.rst
> + pc87360.rst
> + pc87427.rst
> + pcf8591.rst
> + pmbus.rst
> + powr1220.rst
> + pwm-fan.rst
> + raspberrypi-hwmon.rst
> + sch5627.rst
> + sch5636.rst
> + scpi-hwmon.rst
> + sht15.rst
> + sht21.rst
> + sht3x.rst
> + shtc1.rst
> + sis5595.rst
> + smm665.rst
> + smsc47b397.rst
> + smsc47m192.rst
> + smsc47m1.rst
> + tc654.rst
> + tc74.rst
> + thmc50.rst
> + tmp102.rst
> + tmp103.rst
> + tmp108.rst
> + tmp401.rst
> + tmp421.rst
> + tps40422.rst
> + twl4030-madc-hwmon.rst
> + ucd9000.rst
> + ucd9200.rst
> + vexpress.rst
> + via686a.rst
> + vt1211.rst
> + w83627ehf.rst
> + w83627hf.rst
> + w83773g.rst
> + w83781d.rst
> + w83791d.rst
> + w83792d.rst
> + w83793.rst
> + w83795.rst
> + w83l785ts.rst
> + w83l786ng.rst
> + wm831x.rst
> + wm8350.rst
> + xgene-hwmon.rst
> + zl6100.rst
> +
> +.. only:: subproject and html
> +
> + Indices
> + =======
> +
> + * :ref:`genindex`
> diff --git a/Documentation/hwmon/ir35221 b/Documentation/hwmon/ir35221.rst
> similarity index 100%
> rename from Documentation/hwmon/ir35221
> rename to Documentation/hwmon/ir35221.rst
> diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87.rst
> similarity index 100%
> rename from Documentation/hwmon/it87
> rename to Documentation/hwmon/it87.rst
> diff --git a/Documentation/hwmon/jc42 b/Documentation/hwmon/jc42.rst
> similarity index 100%
> rename from Documentation/hwmon/jc42
> rename to Documentation/hwmon/jc42.rst
> diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp.rst
> similarity index 100%
> rename from Documentation/hwmon/k10temp
> rename to Documentation/hwmon/k10temp.rst
> diff --git a/Documentation/hwmon/k8temp b/Documentation/hwmon/k8temp.rst
> similarity index 100%
> rename from Documentation/hwmon/k8temp
> rename to Documentation/hwmon/k8temp.rst
> diff --git a/Documentation/hwmon/lineage-pem b/Documentation/hwmon/lineage-pem.rst
> similarity index 100%
> rename from Documentation/hwmon/lineage-pem
> rename to Documentation/hwmon/lineage-pem.rst
> diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066.rst
> similarity index 97%
> rename from Documentation/hwmon/lm25066
> rename to Documentation/hwmon/lm25066.rst
> index 60b7f2722931..da15e3094c8c 100644
> --- a/Documentation/hwmon/lm25066
> +++ b/Documentation/hwmon/lm25066.rst
> @@ -69,7 +69,7 @@ LM25066, LM5064, and LM5066/LM5066I Power Management, Monitoring,
> Control, and Protection ICs.
>
> The driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> diff --git a/Documentation/hwmon/lm63 b/Documentation/hwmon/lm63.rst
> similarity index 100%
> rename from Documentation/hwmon/lm63
> rename to Documentation/hwmon/lm63.rst
> diff --git a/Documentation/hwmon/lm70 b/Documentation/hwmon/lm70.rst
> similarity index 100%
> rename from Documentation/hwmon/lm70
> rename to Documentation/hwmon/lm70.rst
> diff --git a/Documentation/hwmon/lm73 b/Documentation/hwmon/lm73.rst
> similarity index 100%
> rename from Documentation/hwmon/lm73
> rename to Documentation/hwmon/lm73.rst
> diff --git a/Documentation/hwmon/lm75 b/Documentation/hwmon/lm75.rst
> similarity index 100%
> rename from Documentation/hwmon/lm75
> rename to Documentation/hwmon/lm75.rst
> diff --git a/Documentation/hwmon/lm77 b/Documentation/hwmon/lm77.rst
> similarity index 100%
> rename from Documentation/hwmon/lm77
> rename to Documentation/hwmon/lm77.rst
> diff --git a/Documentation/hwmon/lm78 b/Documentation/hwmon/lm78.rst
> similarity index 100%
> rename from Documentation/hwmon/lm78
> rename to Documentation/hwmon/lm78.rst
> diff --git a/Documentation/hwmon/lm80 b/Documentation/hwmon/lm80.rst
> similarity index 100%
> rename from Documentation/hwmon/lm80
> rename to Documentation/hwmon/lm80.rst
> diff --git a/Documentation/hwmon/lm83 b/Documentation/hwmon/lm83.rst
> similarity index 100%
> rename from Documentation/hwmon/lm83
> rename to Documentation/hwmon/lm83.rst
> diff --git a/Documentation/hwmon/lm85 b/Documentation/hwmon/lm85.rst
> similarity index 100%
> rename from Documentation/hwmon/lm85
> rename to Documentation/hwmon/lm85.rst
> diff --git a/Documentation/hwmon/lm87 b/Documentation/hwmon/lm87.rst
> similarity index 100%
> rename from Documentation/hwmon/lm87
> rename to Documentation/hwmon/lm87.rst
> diff --git a/Documentation/hwmon/lm90 b/Documentation/hwmon/lm90.rst
> similarity index 100%
> rename from Documentation/hwmon/lm90
> rename to Documentation/hwmon/lm90.rst
> diff --git a/Documentation/hwmon/lm92 b/Documentation/hwmon/lm92.rst
> similarity index 100%
> rename from Documentation/hwmon/lm92
> rename to Documentation/hwmon/lm92.rst
> diff --git a/Documentation/hwmon/lm93 b/Documentation/hwmon/lm93.rst
> similarity index 100%
> rename from Documentation/hwmon/lm93
> rename to Documentation/hwmon/lm93.rst
> diff --git a/Documentation/hwmon/lm95234 b/Documentation/hwmon/lm95234.rst
> similarity index 100%
> rename from Documentation/hwmon/lm95234
> rename to Documentation/hwmon/lm95234.rst
> diff --git a/Documentation/hwmon/lm95245 b/Documentation/hwmon/lm95245.rst
> similarity index 100%
> rename from Documentation/hwmon/lm95245
> rename to Documentation/hwmon/lm95245.rst
> diff --git a/Documentation/hwmon/ltc2945 b/Documentation/hwmon/ltc2945.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc2945
> rename to Documentation/hwmon/ltc2945.rst
> diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc2978
> rename to Documentation/hwmon/ltc2978.rst
> diff --git a/Documentation/hwmon/ltc2990 b/Documentation/hwmon/ltc2990.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc2990
> rename to Documentation/hwmon/ltc2990.rst
> diff --git a/Documentation/hwmon/ltc3815 b/Documentation/hwmon/ltc3815.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc3815
> rename to Documentation/hwmon/ltc3815.rst
> diff --git a/Documentation/hwmon/ltc4151 b/Documentation/hwmon/ltc4151.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc4151
> rename to Documentation/hwmon/ltc4151.rst
> diff --git a/Documentation/hwmon/ltc4215 b/Documentation/hwmon/ltc4215.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc4215
> rename to Documentation/hwmon/ltc4215.rst
> diff --git a/Documentation/hwmon/ltc4245 b/Documentation/hwmon/ltc4245.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc4245
> rename to Documentation/hwmon/ltc4245.rst
> diff --git a/Documentation/hwmon/ltc4260 b/Documentation/hwmon/ltc4260.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc4260
> rename to Documentation/hwmon/ltc4260.rst
> diff --git a/Documentation/hwmon/ltc4261 b/Documentation/hwmon/ltc4261.rst
> similarity index 100%
> rename from Documentation/hwmon/ltc4261
> rename to Documentation/hwmon/ltc4261.rst
> diff --git a/Documentation/hwmon/max16064 b/Documentation/hwmon/max16064.rst
> similarity index 96%
> rename from Documentation/hwmon/max16064
> rename to Documentation/hwmon/max16064.rst
> index 61ec679dc477..6d5e9538991f 100644
> --- a/Documentation/hwmon/max16064
> +++ b/Documentation/hwmon/max16064.rst
> @@ -21,7 +21,7 @@ This driver supports hardware monitoring for Maxim MAX16064 Quad Power-Supply
> Controller with Active-Voltage Output Control and PMBus Interface.
>
> The driver is a client driver to the core PMBus driver.
> -Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> diff --git a/Documentation/hwmon/max16065 b/Documentation/hwmon/max16065.rst
> similarity index 100%
> rename from Documentation/hwmon/max16065
> rename to Documentation/hwmon/max16065.rst
> diff --git a/Documentation/hwmon/max1619 b/Documentation/hwmon/max1619.rst
> similarity index 99%
> rename from Documentation/hwmon/max1619
> rename to Documentation/hwmon/max1619.rst
> index 4b3762c4eceb..e25956e70f73 100644
> --- a/Documentation/hwmon/max1619
> +++ b/Documentation/hwmon/max1619.rst
> @@ -31,4 +31,3 @@ Only the external sensor has high and low limits.
> The max1619 driver will not update its values more frequently than every
> other second; reading them more often will do no harm, but will return
> 'old' values.
> -
> diff --git a/Documentation/hwmon/max1668 b/Documentation/hwmon/max1668.rst
> similarity index 100%
> rename from Documentation/hwmon/max1668
> rename to Documentation/hwmon/max1668.rst
> diff --git a/Documentation/hwmon/max197 b/Documentation/hwmon/max197.rst
> similarity index 100%
> rename from Documentation/hwmon/max197
> rename to Documentation/hwmon/max197.rst
> diff --git a/Documentation/hwmon/max20751 b/Documentation/hwmon/max20751.rst
> similarity index 96%
> rename from Documentation/hwmon/max20751
> rename to Documentation/hwmon/max20751.rst
> index d546695900ef..aa4469be6674 100644
> --- a/Documentation/hwmon/max20751
> +++ b/Documentation/hwmon/max20751.rst
> @@ -23,7 +23,7 @@ This driver supports MAX20751 Multiphase Master with PMBus Interface
> and Internal Buck Converter.
>
> The driver is a client driver to the core PMBus driver.
> -Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> diff --git a/Documentation/hwmon/max31722 b/Documentation/hwmon/max31722.rst
> similarity index 100%
> rename from Documentation/hwmon/max31722
> rename to Documentation/hwmon/max31722.rst
> diff --git a/Documentation/hwmon/max31785 b/Documentation/hwmon/max31785.rst
> similarity index 100%
> rename from Documentation/hwmon/max31785
> rename to Documentation/hwmon/max31785.rst
> diff --git a/Documentation/hwmon/max31790 b/Documentation/hwmon/max31790.rst
> similarity index 100%
> rename from Documentation/hwmon/max31790
> rename to Documentation/hwmon/max31790.rst
> diff --git a/Documentation/hwmon/max34440 b/Documentation/hwmon/max34440.rst
> similarity index 98%
> rename from Documentation/hwmon/max34440
> rename to Documentation/hwmon/max34440.rst
> index 639838ef29fd..939138e12b02 100644
> --- a/Documentation/hwmon/max34440
> +++ b/Documentation/hwmon/max34440.rst
> @@ -76,7 +76,7 @@ based on GIN pins. The MAX34460 supports 12 voltage channels, and the MAX34461
> supports 16 voltage channels.
>
> The driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> diff --git a/Documentation/hwmon/max6639 b/Documentation/hwmon/max6639.rst
> similarity index 100%
> rename from Documentation/hwmon/max6639
> rename to Documentation/hwmon/max6639.rst
> diff --git a/Documentation/hwmon/max6642 b/Documentation/hwmon/max6642.rst
> similarity index 100%
> rename from Documentation/hwmon/max6642
> rename to Documentation/hwmon/max6642.rst
> diff --git a/Documentation/hwmon/max6650 b/Documentation/hwmon/max6650.rst
> similarity index 99%
> rename from Documentation/hwmon/max6650
> rename to Documentation/hwmon/max6650.rst
> index 74dc3f0caaa2..253482add082 100644
> --- a/Documentation/hwmon/max6650
> +++ b/Documentation/hwmon/max6650.rst
> @@ -72,4 +72,3 @@ clock: The clock frequency in Hz of the chip the driver should assume [254000]
>
> Please have a look at the MAX6650/6651 data sheet and make sure that you fully
> understand the meaning of these parameters before you attempt to change them.
> -
> diff --git a/Documentation/hwmon/max6697 b/Documentation/hwmon/max6697.rst
> similarity index 100%
> rename from Documentation/hwmon/max6697
> rename to Documentation/hwmon/max6697.rst
> diff --git a/Documentation/hwmon/max8688 b/Documentation/hwmon/max8688.rst
> similarity index 97%
> rename from Documentation/hwmon/max8688
> rename to Documentation/hwmon/max8688.rst
> index 43da139234c1..009487759c61 100644
> --- a/Documentation/hwmon/max8688
> +++ b/Documentation/hwmon/max8688.rst
> @@ -21,7 +21,7 @@ This driver supports hardware monitoring for Maxim MAX8688 Digital Power-Supply
> Controller/Monitor with PMBus Interface.
>
> The driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> diff --git a/Documentation/hwmon/mc13783-adc b/Documentation/hwmon/mc13783-adc.rst
> similarity index 100%
> rename from Documentation/hwmon/mc13783-adc
> rename to Documentation/hwmon/mc13783-adc.rst
> diff --git a/Documentation/hwmon/mcp3021 b/Documentation/hwmon/mcp3021.rst
> similarity index 100%
> rename from Documentation/hwmon/mcp3021
> rename to Documentation/hwmon/mcp3021.rst
> diff --git a/Documentation/hwmon/menf21bmc b/Documentation/hwmon/menf21bmc.rst
> similarity index 100%
> rename from Documentation/hwmon/menf21bmc
> rename to Documentation/hwmon/menf21bmc.rst
> diff --git a/Documentation/hwmon/mlxreg-fan b/Documentation/hwmon/mlxreg-fan.rst
> similarity index 100%
> rename from Documentation/hwmon/mlxreg-fan
> rename to Documentation/hwmon/mlxreg-fan.rst
> diff --git a/Documentation/hwmon/nct6683 b/Documentation/hwmon/nct6683.rst
> similarity index 100%
> rename from Documentation/hwmon/nct6683
> rename to Documentation/hwmon/nct6683.rst
> diff --git a/Documentation/hwmon/nct6775 b/Documentation/hwmon/nct6775.rst
> similarity index 100%
> rename from Documentation/hwmon/nct6775
> rename to Documentation/hwmon/nct6775.rst
> diff --git a/Documentation/hwmon/nct7802 b/Documentation/hwmon/nct7802.rst
> similarity index 100%
> rename from Documentation/hwmon/nct7802
> rename to Documentation/hwmon/nct7802.rst
> diff --git a/Documentation/hwmon/nct7904 b/Documentation/hwmon/nct7904.rst
> similarity index 100%
> rename from Documentation/hwmon/nct7904
> rename to Documentation/hwmon/nct7904.rst
> diff --git a/Documentation/hwmon/npcm750-pwm-fan b/Documentation/hwmon/npcm750-pwm-fan.rst
> similarity index 100%
> rename from Documentation/hwmon/npcm750-pwm-fan
> rename to Documentation/hwmon/npcm750-pwm-fan.rst
> diff --git a/Documentation/hwmon/nsa320 b/Documentation/hwmon/nsa320.rst
> similarity index 100%
> rename from Documentation/hwmon/nsa320
> rename to Documentation/hwmon/nsa320.rst
> diff --git a/Documentation/hwmon/ntc_thermistor b/Documentation/hwmon/ntc_thermistor.rst
> similarity index 100%
> rename from Documentation/hwmon/ntc_thermistor
> rename to Documentation/hwmon/ntc_thermistor.rst
> diff --git a/Documentation/hwmon/occ b/Documentation/hwmon/occ.rst
> similarity index 100%
> rename from Documentation/hwmon/occ
> rename to Documentation/hwmon/occ.rst
> diff --git a/Documentation/hwmon/pc87360 b/Documentation/hwmon/pc87360.rst
> similarity index 100%
> rename from Documentation/hwmon/pc87360
> rename to Documentation/hwmon/pc87360.rst
> diff --git a/Documentation/hwmon/pc87427 b/Documentation/hwmon/pc87427.rst
> similarity index 100%
> rename from Documentation/hwmon/pc87427
> rename to Documentation/hwmon/pc87427.rst
> diff --git a/Documentation/hwmon/pcf8591 b/Documentation/hwmon/pcf8591.rst
> similarity index 100%
> rename from Documentation/hwmon/pcf8591
> rename to Documentation/hwmon/pcf8591.rst
> diff --git a/Documentation/hwmon/pmbus-core b/Documentation/hwmon/pmbus-core.rst
> similarity index 100%
> rename from Documentation/hwmon/pmbus-core
> rename to Documentation/hwmon/pmbus-core.rst
> diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus.rst
> similarity index 100%
> rename from Documentation/hwmon/pmbus
> rename to Documentation/hwmon/pmbus.rst
> diff --git a/Documentation/hwmon/powr1220 b/Documentation/hwmon/powr1220.rst
> similarity index 100%
> rename from Documentation/hwmon/powr1220
> rename to Documentation/hwmon/powr1220.rst
> diff --git a/Documentation/hwmon/pwm-fan b/Documentation/hwmon/pwm-fan.rst
> similarity index 100%
> rename from Documentation/hwmon/pwm-fan
> rename to Documentation/hwmon/pwm-fan.rst
> diff --git a/Documentation/hwmon/raspberrypi-hwmon b/Documentation/hwmon/raspberrypi-hwmon.rst
> similarity index 100%
> rename from Documentation/hwmon/raspberrypi-hwmon
> rename to Documentation/hwmon/raspberrypi-hwmon.rst
> diff --git a/Documentation/hwmon/sch5627 b/Documentation/hwmon/sch5627.rst
> similarity index 100%
> rename from Documentation/hwmon/sch5627
> rename to Documentation/hwmon/sch5627.rst
> diff --git a/Documentation/hwmon/sch5636 b/Documentation/hwmon/sch5636.rst
> similarity index 100%
> rename from Documentation/hwmon/sch5636
> rename to Documentation/hwmon/sch5636.rst
> diff --git a/Documentation/hwmon/scpi-hwmon b/Documentation/hwmon/scpi-hwmon.rst
> similarity index 100%
> rename from Documentation/hwmon/scpi-hwmon
> rename to Documentation/hwmon/scpi-hwmon.rst
> diff --git a/Documentation/hwmon/sht15 b/Documentation/hwmon/sht15.rst
> similarity index 100%
> rename from Documentation/hwmon/sht15
> rename to Documentation/hwmon/sht15.rst
> diff --git a/Documentation/hwmon/sht21 b/Documentation/hwmon/sht21.rst
> similarity index 100%
> rename from Documentation/hwmon/sht21
> rename to Documentation/hwmon/sht21.rst
> diff --git a/Documentation/hwmon/sht3x b/Documentation/hwmon/sht3x.rst
> similarity index 100%
> rename from Documentation/hwmon/sht3x
> rename to Documentation/hwmon/sht3x.rst
> diff --git a/Documentation/hwmon/shtc1 b/Documentation/hwmon/shtc1.rst
> similarity index 100%
> rename from Documentation/hwmon/shtc1
> rename to Documentation/hwmon/shtc1.rst
> diff --git a/Documentation/hwmon/sis5595 b/Documentation/hwmon/sis5595.rst
> similarity index 99%
> rename from Documentation/hwmon/sis5595
> rename to Documentation/hwmon/sis5595.rst
> index 5acba6b0c0db..16123b3bfff9 100644
> --- a/Documentation/hwmon/sis5595
> +++ b/Documentation/hwmon/sis5595.rst
> @@ -121,4 +121,3 @@ Problems
> --------
> Some chips refuse to be enabled. We don't know why.
> The driver will recognize this and print a message in dmesg.
> -
> diff --git a/Documentation/hwmon/smm665 b/Documentation/hwmon/smm665.rst
> similarity index 100%
> rename from Documentation/hwmon/smm665
> rename to Documentation/hwmon/smm665.rst
> diff --git a/Documentation/hwmon/smsc47b397 b/Documentation/hwmon/smsc47b397.rst
> similarity index 100%
> rename from Documentation/hwmon/smsc47b397
> rename to Documentation/hwmon/smsc47b397.rst
> diff --git a/Documentation/hwmon/smsc47m1 b/Documentation/hwmon/smsc47m1.rst
> similarity index 100%
> rename from Documentation/hwmon/smsc47m1
> rename to Documentation/hwmon/smsc47m1.rst
> diff --git a/Documentation/hwmon/smsc47m192 b/Documentation/hwmon/smsc47m192.rst
> similarity index 100%
> rename from Documentation/hwmon/smsc47m192
> rename to Documentation/hwmon/smsc47m192.rst
> diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches.rst
> similarity index 98%
> rename from Documentation/hwmon/submitting-patches
> rename to Documentation/hwmon/submitting-patches.rst
> index 12540b7d9b50..f9796b9d9db6 100644
> --- a/Documentation/hwmon/submitting-patches
> +++ b/Documentation/hwmon/submitting-patches.rst
> @@ -39,7 +39,7 @@ increase the chances of your change being accepted.
> 2. Adding functionality to existing drivers
> -------------------------------------------
>
> -* Make sure the documentation in Documentation/hwmon/<driver_name> is up to
> +* Make sure the documentation in Documentation/hwmon/<driver_name>.rst is up to
> date.
>
> * Make sure the information in Kconfig is up to date.
> @@ -61,7 +61,7 @@ increase the chances of your change being accepted.
>
> * Consider adding yourself to MAINTAINERS.
>
> -* Document the driver in Documentation/hwmon/<driver_name>.
> +* Document the driver in Documentation/hwmon/<driver_name>.rst.
>
> * Add the driver to Kconfig and Makefile in alphabetical order.
>
> @@ -134,7 +134,7 @@ increase the chances of your change being accepted.
> non-standard attributes, or you believe you do, discuss it on the mailing list
> first. Either case, provide a detailed explanation why you need the
> non-standard attribute(s).
> - Standard attributes are specified in Documentation/hwmon/sysfs-interface.
> + Standard attributes are specified in Documentation/hwmon/sysfs-interface.rst.
>
> * When deciding which sysfs attributes to support, look at the chip's
> capabilities. While we do not expect your driver to support everything the
> diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface.rst
> similarity index 100%
> rename from Documentation/hwmon/sysfs-interface
> rename to Documentation/hwmon/sysfs-interface.rst
> diff --git a/Documentation/hwmon/tc654 b/Documentation/hwmon/tc654.rst
> similarity index 100%
> rename from Documentation/hwmon/tc654
> rename to Documentation/hwmon/tc654.rst
> diff --git a/Documentation/hwmon/tc74 b/Documentation/hwmon/tc74.rst
> similarity index 100%
> rename from Documentation/hwmon/tc74
> rename to Documentation/hwmon/tc74.rst
> diff --git a/Documentation/hwmon/thmc50 b/Documentation/hwmon/thmc50.rst
> similarity index 99%
> rename from Documentation/hwmon/thmc50
> rename to Documentation/hwmon/thmc50.rst
> index 6dba1b59b20c..cfff3885287d 100644
> --- a/Documentation/hwmon/thmc50
> +++ b/Documentation/hwmon/thmc50.rst
> @@ -87,4 +87,3 @@ so it stops fans even if the value 0 into the ANALOG_OUT register does not.
>
> The driver was tested on Compaq AP550 with two ADM1022 chips (one works
> in the temp3 mode), five temperature readings and two fans.
> -
> diff --git a/Documentation/hwmon/tmp102 b/Documentation/hwmon/tmp102.rst
> similarity index 93%
> rename from Documentation/hwmon/tmp102
> rename to Documentation/hwmon/tmp102.rst
> index 5e34821df4ab..b1f585531a88 100644
> --- a/Documentation/hwmon/tmp102
> +++ b/Documentation/hwmon/tmp102.rst
> @@ -28,4 +28,4 @@ The TMP102 has a programmable update rate that can select between 8, 4, 1, and
> 0.5 Hz. (Currently the driver only supports the default of 4 Hz).
>
> The driver provides the common sysfs-interface for temperatures (see
> -Documentation/hwmon/sysfs-interface under Temperatures).
> +Documentation/hwmon/sysfs-interface.rst under Temperatures).
> diff --git a/Documentation/hwmon/tmp103 b/Documentation/hwmon/tmp103.rst
> similarity index 92%
> rename from Documentation/hwmon/tmp103
> rename to Documentation/hwmon/tmp103.rst
> index 7682a795e38c..15d25806d585 100644
> --- a/Documentation/hwmon/tmp103
> +++ b/Documentation/hwmon/tmp103.rst
> @@ -27,7 +27,7 @@ Resolution: 8 Bits
> Accuracy: ±1°C Typ (–10°C to +100°C)
>
> The driver provides the common sysfs-interface for temperatures (see
> -Documentation/hwmon/sysfs-interface under Temperatures).
> +Documentation/hwmon/sysfs-interface.rst under Temperatures).
>
> Please refer how to instantiate this driver:
> Documentation/i2c/instantiating-devices
> diff --git a/Documentation/hwmon/tmp108 b/Documentation/hwmon/tmp108.rst
> similarity index 95%
> rename from Documentation/hwmon/tmp108
> rename to Documentation/hwmon/tmp108.rst
> index 7e08b7ef1e2f..5f4266a16cb2 100644
> --- a/Documentation/hwmon/tmp108
> +++ b/Documentation/hwmon/tmp108.rst
> @@ -38,4 +38,4 @@ and then the device is shut down automatically. (This driver only supports
> continuous mode.)
>
> The driver provides the common sysfs-interface for temperatures (see
> -Documentation/hwmon/sysfs-interface under Temperatures).
> +Documentation/hwmon/sysfs-interface.rst under Temperatures).
> diff --git a/Documentation/hwmon/tmp401 b/Documentation/hwmon/tmp401.rst
> similarity index 97%
> rename from Documentation/hwmon/tmp401
> rename to Documentation/hwmon/tmp401.rst
> index bd865bbdb38d..6a05a0719bc7 100644
> --- a/Documentation/hwmon/tmp401
> +++ b/Documentation/hwmon/tmp401.rst
> @@ -68,7 +68,7 @@ supported by the driver so far, so using the default resolution of 0.5
> degree).
>
> The driver provides the common sysfs-interface for temperatures (see
> -Documentation/hwmon/sysfs-interface under Temperatures).
> +Documentation/hwmon/sysfs-interface.rst under Temperatures).
>
> The TMP411 and TMP431 chips are compatible with TMP401. TMP411 provides
> some additional features.
> diff --git a/Documentation/hwmon/tmp421 b/Documentation/hwmon/tmp421.rst
> similarity index 100%
> rename from Documentation/hwmon/tmp421
> rename to Documentation/hwmon/tmp421.rst
> diff --git a/Documentation/hwmon/tps40422 b/Documentation/hwmon/tps40422.rst
> similarity index 96%
> rename from Documentation/hwmon/tps40422
> rename to Documentation/hwmon/tps40422.rst
> index 359751eb5ed4..b691e30479dd 100644
> --- a/Documentation/hwmon/tps40422
> +++ b/Documentation/hwmon/tps40422.rst
> @@ -21,7 +21,7 @@ This driver supports TI TPS40422 Dual-Output or Two-Phase Synchronous Buck
> Controller with PMBus
>
> The driver is a client driver to the core PMBus driver.
> -Please see Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> diff --git a/Documentation/hwmon/twl4030-madc-hwmon b/Documentation/hwmon/twl4030-madc-hwmon.rst
> similarity index 100%
> rename from Documentation/hwmon/twl4030-madc-hwmon
> rename to Documentation/hwmon/twl4030-madc-hwmon.rst
> diff --git a/Documentation/hwmon/ucd9000 b/Documentation/hwmon/ucd9000.rst
> similarity index 97%
> rename from Documentation/hwmon/ucd9000
> rename to Documentation/hwmon/ucd9000.rst
> index d69061b7312c..ebc4f2b3bfea 100644
> --- a/Documentation/hwmon/ucd9000
> +++ b/Documentation/hwmon/ucd9000.rst
> @@ -57,7 +57,7 @@ system-health monitor. The device integrates a 12-bit ADC for monitoring up to
> 13 power-supply voltage, current, or temperature inputs.
>
> This driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> @@ -72,7 +72,7 @@ Platform data support
> ---------------------
>
> The driver supports standard PMBus driver platform data. Please see
> -Documentation/hwmon/pmbus for details.
> +Documentation/hwmon/pmbus.rst for details.
>
>
> Sysfs entries
> diff --git a/Documentation/hwmon/ucd9200 b/Documentation/hwmon/ucd9200.rst
> similarity index 97%
> rename from Documentation/hwmon/ucd9200
> rename to Documentation/hwmon/ucd9200.rst
> index 44eda4a579b6..b819dfd75f71 100644
> --- a/Documentation/hwmon/ucd9200
> +++ b/Documentation/hwmon/ucd9200.rst
> @@ -33,7 +33,7 @@ dedicated circuitry for DC/DC loop management with flash memory and a serial
> interface to support configuration, monitoring and management.
>
> This driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus for details on PMBus client drivers.
> +Documentation/hwmon/pmbus.rst for details on PMBus client drivers.
>
>
> Usage Notes
> @@ -48,7 +48,7 @@ Platform data support
> ---------------------
>
> The driver supports standard PMBus driver platform data. Please see
> -Documentation/hwmon/pmbus for details.
> +Documentation/hwmon/pmbus.rst for details.
>
>
> Sysfs entries
> diff --git a/Documentation/hwmon/userspace-tools b/Documentation/hwmon/userspace-tools.rst
> similarity index 100%
> rename from Documentation/hwmon/userspace-tools
> rename to Documentation/hwmon/userspace-tools.rst
> diff --git a/Documentation/hwmon/vexpress b/Documentation/hwmon/vexpress.rst
> similarity index 100%
> rename from Documentation/hwmon/vexpress
> rename to Documentation/hwmon/vexpress.rst
> diff --git a/Documentation/hwmon/via686a b/Documentation/hwmon/via686a.rst
> similarity index 100%
> rename from Documentation/hwmon/via686a
> rename to Documentation/hwmon/via686a.rst
> diff --git a/Documentation/hwmon/vt1211 b/Documentation/hwmon/vt1211.rst
> similarity index 100%
> rename from Documentation/hwmon/vt1211
> rename to Documentation/hwmon/vt1211.rst
> diff --git a/Documentation/hwmon/w83627ehf b/Documentation/hwmon/w83627ehf.rst
> similarity index 100%
> rename from Documentation/hwmon/w83627ehf
> rename to Documentation/hwmon/w83627ehf.rst
> diff --git a/Documentation/hwmon/w83627hf b/Documentation/hwmon/w83627hf.rst
> similarity index 100%
> rename from Documentation/hwmon/w83627hf
> rename to Documentation/hwmon/w83627hf.rst
> diff --git a/Documentation/hwmon/w83773g b/Documentation/hwmon/w83773g.rst
> similarity index 100%
> rename from Documentation/hwmon/w83773g
> rename to Documentation/hwmon/w83773g.rst
> diff --git a/Documentation/hwmon/w83781d b/Documentation/hwmon/w83781d.rst
> similarity index 100%
> rename from Documentation/hwmon/w83781d
> rename to Documentation/hwmon/w83781d.rst
> diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d.rst
> similarity index 99%
> rename from Documentation/hwmon/w83791d
> rename to Documentation/hwmon/w83791d.rst
> index a91f9e5fb0c6..3adaed39b157 100644
> --- a/Documentation/hwmon/w83791d
> +++ b/Documentation/hwmon/w83791d.rst
> @@ -102,7 +102,7 @@ This file is used for both legacy and new code.
>
> The sysfs interface to the beep bitmask has migrated from the original legacy
> method of a single sysfs beep_mask file to a newer method using multiple
> -`*_beep` files as described in `Documentation/hwmon/sysfs-interface`.
> +`*_beep` files as described in `Documentation/hwmon/sysfs-interface.rst`.
>
> A similar change has occurred for the bitmap corresponding to the alarms. The
> original legacy method used a single sysfs alarms file containing a bitmap
> diff --git a/Documentation/hwmon/w83792d b/Documentation/hwmon/w83792d.rst
> similarity index 100%
> rename from Documentation/hwmon/w83792d
> rename to Documentation/hwmon/w83792d.rst
> diff --git a/Documentation/hwmon/w83793 b/Documentation/hwmon/w83793.rst
> similarity index 100%
> rename from Documentation/hwmon/w83793
> rename to Documentation/hwmon/w83793.rst
> diff --git a/Documentation/hwmon/w83795 b/Documentation/hwmon/w83795.rst
> similarity index 100%
> rename from Documentation/hwmon/w83795
> rename to Documentation/hwmon/w83795.rst
> diff --git a/Documentation/hwmon/w83l785ts b/Documentation/hwmon/w83l785ts.rst
> similarity index 100%
> rename from Documentation/hwmon/w83l785ts
> rename to Documentation/hwmon/w83l785ts.rst
> diff --git a/Documentation/hwmon/w83l786ng b/Documentation/hwmon/w83l786ng.rst
> similarity index 100%
> rename from Documentation/hwmon/w83l786ng
> rename to Documentation/hwmon/w83l786ng.rst
> diff --git a/Documentation/hwmon/wm831x b/Documentation/hwmon/wm831x.rst
> similarity index 100%
> rename from Documentation/hwmon/wm831x
> rename to Documentation/hwmon/wm831x.rst
> diff --git a/Documentation/hwmon/wm8350 b/Documentation/hwmon/wm8350.rst
> similarity index 100%
> rename from Documentation/hwmon/wm8350
> rename to Documentation/hwmon/wm8350.rst
> diff --git a/Documentation/hwmon/xgene-hwmon b/Documentation/hwmon/xgene-hwmon.rst
> similarity index 100%
> rename from Documentation/hwmon/xgene-hwmon
> rename to Documentation/hwmon/xgene-hwmon.rst
> diff --git a/Documentation/hwmon/zl6100 b/Documentation/hwmon/zl6100.rst
> similarity index 98%
> rename from Documentation/hwmon/zl6100
> rename to Documentation/hwmon/zl6100.rst
> index 4029970bace4..41513bb7fe51 100644
> --- a/Documentation/hwmon/zl6100
> +++ b/Documentation/hwmon/zl6100.rst
> @@ -113,7 +113,7 @@ This driver supports hardware monitoring for Intersil / Zilker Labs ZL6100 and
> compatible digital DC-DC controllers.
>
> The driver is a client driver to the core PMBus driver. Please see
> -Documentation/hwmon/pmbus and Documentation.hwmon/pmbus-core for details
> +Documentation/hwmon/pmbus.rst and Documentation.hwmon/pmbus-core for details
> on PMBus client drivers.
>
>
> diff --git a/Documentation/index.rst b/Documentation/index.rst
> index 80a421cb935e..3a710dc24fc8 100644
> --- a/Documentation/index.rst
> +++ b/Documentation/index.rst
> @@ -83,6 +83,7 @@ needed).
> media/index
> networking/index
> input/index
> + hwmon/index
> gpu/index
> security/index
> sound/index
> diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
> index 911399730c1c..c3fa500df92c 100644
> --- a/Documentation/thermal/sysfs-api.txt
> +++ b/Documentation/thermal/sysfs-api.txt
> @@ -316,7 +316,7 @@ ACPI thermal zones.
> |---temp[1-*]_input: The current temperature of thermal zone [1-*]
> |---temp[1-*]_critical: The critical trip point of thermal zone [1-*]
>
> -Please read Documentation/hwmon/sysfs-interface for additional information.
> +Please read Documentation/hwmon/sysfs-interface.rst for additional information.
>
> ***************************
> * Thermal zone attributes *
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 349e5d8c3f58..6269c9d671ca 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -468,7 +468,7 @@ ADM1025 HARDWARE MONITOR DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/adm1025
> +F: Documentation/hwmon/adm1025.rst
> F: drivers/hwmon/adm1025.c
>
> ADM1029 HARDWARE MONITOR DRIVER
> @@ -520,7 +520,7 @@ ADS1015 HARDWARE MONITOR DRIVER
> M: Dirk Eibach <eibach@gdsys.de>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/ads1015
> +F: Documentation/hwmon/ads1015.rst
> F: drivers/hwmon/ads1015.c
> F: include/linux/platform_data/ads1015.h
>
> @@ -533,7 +533,7 @@ ADT7475 HARDWARE MONITOR DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/adt7475
> +F: Documentation/hwmon/adt7475.rst
> F: drivers/hwmon/adt7475.c
>
> ADVANSYS SCSI DRIVER
> @@ -764,7 +764,7 @@ AMD FAM15H PROCESSOR POWER MONITORING DRIVER
> M: Huang Rui <ray.huang@amd.com>
> L: linux-hwmon@vger.kernel.org
> S: Supported
> -F: Documentation/hwmon/fam15h_power
> +F: Documentation/hwmon/fam15h_power.rst
> F: drivers/hwmon/fam15h_power.c
>
> AMD FCH GPIO DRIVER
> @@ -2531,7 +2531,7 @@ ASC7621 HARDWARE MONITOR DRIVER
> M: George Joseph <george.joseph@fairview5.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/asc7621
> +F: Documentation/hwmon/asc7621.rst
> F: drivers/hwmon/asc7621.c
>
> ASPEED VIDEO ENGINE DRIVER
> @@ -4071,7 +4071,7 @@ CORETEMP HARDWARE MONITORING DRIVER
> M: Fenghua Yu <fenghua.yu@intel.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/coretemp
> +F: Documentation/hwmon/coretemp.rst
> F: drivers/hwmon/coretemp.c
>
> COSA/SRP SYNC SERIAL DRIVER
> @@ -4627,7 +4627,7 @@ DIALOG SEMICONDUCTOR DRIVERS
> M: Support Opensource <support.opensource@diasemi.com>
> W: http://www.dialog-semiconductor.com/products
> S: Supported
> -F: Documentation/hwmon/da90??
> +F: Documentation/hwmon/da90??.rst
> F: Documentation/devicetree/bindings/mfd/da90*.txt
> F: Documentation/devicetree/bindings/input/da90??-onkey.txt
> F: Documentation/devicetree/bindings/thermal/da90??-thermal.txt
> @@ -4778,7 +4778,7 @@ DME1737 HARDWARE MONITOR DRIVER
> M: Juerg Haefliger <juergh@gmail.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/dme1737
> +F: Documentation/hwmon/dme1737.rst
> F: drivers/hwmon/dme1737.c
>
> DMI/SMBIOS SUPPORT
> @@ -6006,7 +6006,7 @@ F71805F HARDWARE MONITORING DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/f71805f
> +F: Documentation/hwmon/f71805f.rst
> F: drivers/hwmon/f71805f.c
>
> FADDR2LINE
> @@ -7687,7 +7687,7 @@ INA209 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/ina209
> +F: Documentation/hwmon/ina209.rst
> F: Documentation/devicetree/bindings/hwmon/ina2xx.txt
> F: drivers/hwmon/ina209.c
>
> @@ -7695,7 +7695,7 @@ INA2XX HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/ina2xx
> +F: Documentation/hwmon/ina2xx.rst
> F: drivers/hwmon/ina2xx.c
> F: include/linux/platform_data/ina2xx.h
>
> @@ -8328,7 +8328,7 @@ IT87 HARDWARE MONITORING DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/it87
> +F: Documentation/hwmon/it87.rst
> F: drivers/hwmon/it87.c
>
> IT913X MEDIA DRIVER
> @@ -8372,7 +8372,7 @@ M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> F: drivers/hwmon/jc42.c
> -F: Documentation/hwmon/jc42
> +F: Documentation/hwmon/jc42.rst
>
> JFS FILESYSTEM
> M: Dave Kleikamp <shaggy@kernel.org>
> @@ -8420,14 +8420,14 @@ K10TEMP HARDWARE MONITORING DRIVER
> M: Clemens Ladisch <clemens@ladisch.de>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/k10temp
> +F: Documentation/hwmon/k10temp.rst
> F: drivers/hwmon/k10temp.c
>
> K8TEMP HARDWARE MONITORING DRIVER
> M: Rudolf Marek <r.marek@assembler.cz>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/k8temp
> +F: Documentation/hwmon/k8temp.rst
> F: drivers/hwmon/k8temp.c
>
> KASAN
> @@ -9118,21 +9118,21 @@ LM78 HARDWARE MONITOR DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/lm78
> +F: Documentation/hwmon/lm78.rst
> F: drivers/hwmon/lm78.c
>
> LM83 HARDWARE MONITOR DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/lm83
> +F: Documentation/hwmon/lm83.rst
> F: drivers/hwmon/lm83.c
>
> LM90 HARDWARE MONITOR DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/lm90
> +F: Documentation/hwmon/lm90.rst
> F: Documentation/devicetree/bindings/hwmon/lm90.txt
> F: drivers/hwmon/lm90.c
> F: include/dt-bindings/thermal/lm90.h
> @@ -9141,7 +9141,7 @@ LM95234 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/lm95234
> +F: Documentation/hwmon/lm95234.rst
> F: drivers/hwmon/lm95234.c
>
> LME2510 MEDIA DRIVER
> @@ -9214,7 +9214,7 @@ LTC4261 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/ltc4261
> +F: Documentation/hwmon/ltc4261.rst
> F: drivers/hwmon/ltc4261.c
>
> LTC4306 I2C MULTIPLEXER DRIVER
> @@ -9445,7 +9445,7 @@ MAX16065 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/max16065
> +F: Documentation/hwmon/max16065.rst
> F: drivers/hwmon/max16065.c
>
> MAX2175 SDR TUNER DRIVER
> @@ -9461,14 +9461,14 @@ F: include/uapi/linux/max2175.h
> MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
> L: linux-hwmon@vger.kernel.org
> S: Orphan
> -F: Documentation/hwmon/max6650
> +F: Documentation/hwmon/max6650.rst
> F: drivers/hwmon/max6650.c
>
> MAX6697 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/max6697
> +F: Documentation/hwmon/max6697.rst
> F: Documentation/devicetree/bindings/hwmon/max6697.txt
> F: drivers/hwmon/max6697.c
> F: include/linux/platform_data/max6697.h
> @@ -10118,7 +10118,7 @@ F: drivers/mfd/menf21bmc.c
> F: drivers/watchdog/menf21bmc_wdt.c
> F: drivers/leds/leds-menf21bmc.c
> F: drivers/hwmon/menf21bmc_hwmon.c
> -F: Documentation/hwmon/menf21bmc
> +F: Documentation/hwmon/menf21bmc.rst
>
> MEN Z069 WATCHDOG DRIVER
> M: Johannes Thumshirn <jth@kernel.org>
> @@ -10747,7 +10747,7 @@ NCT6775 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/nct6775
> +F: Documentation/hwmon/nct6775.rst
> F: drivers/hwmon/nct6775.c
>
> NET_FAILOVER MODULE
> @@ -11841,7 +11841,7 @@ PC87360 HARDWARE MONITORING DRIVER
> M: Jim Cromie <jim.cromie@gmail.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/pc87360
> +F: Documentation/hwmon/pc87360.rst
> F: drivers/hwmon/pc87360.c
>
> PC8736x GPIO DRIVER
> @@ -11853,7 +11853,7 @@ PC87427 HARDWARE MONITORING DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/pc87427
> +F: Documentation/hwmon/pc87427.rst
> F: drivers/hwmon/pc87427.c
>
> PCA9532 LED DRIVER
> @@ -12421,23 +12421,23 @@ S: Maintained
> F: Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt
> F: Documentation/devicetree/bindings/hwmon/max31785.txt
> F: Documentation/devicetree/bindings/hwmon/ltc2978.txt
> -F: Documentation/hwmon/adm1275
> -F: Documentation/hwmon/ibm-cffps
> -F: Documentation/hwmon/ir35221
> -F: Documentation/hwmon/lm25066
> -F: Documentation/hwmon/ltc2978
> -F: Documentation/hwmon/ltc3815
> -F: Documentation/hwmon/max16064
> -F: Documentation/hwmon/max20751
> -F: Documentation/hwmon/max31785
> -F: Documentation/hwmon/max34440
> -F: Documentation/hwmon/max8688
> -F: Documentation/hwmon/pmbus
> -F: Documentation/hwmon/pmbus-core
> -F: Documentation/hwmon/tps40422
> -F: Documentation/hwmon/ucd9000
> -F: Documentation/hwmon/ucd9200
> -F: Documentation/hwmon/zl6100
> +F: Documentation/hwmon/adm1275.rst
> +F: Documentation/hwmon/ibm-cffps.rst
> +F: Documentation/hwmon/ir35221.rst
> +F: Documentation/hwmon/lm25066.rst
> +F: Documentation/hwmon/ltc2978.rst
> +F: Documentation/hwmon/ltc3815.rst
> +F: Documentation/hwmon/max16064.rst
> +F: Documentation/hwmon/max20751.rst
> +F: Documentation/hwmon/max31785.rst
> +F: Documentation/hwmon/max34440.rst
> +F: Documentation/hwmon/max8688.rst
> +F: Documentation/hwmon/pmbus.rst
> +F: Documentation/hwmon/pmbus-core.rst
> +F: Documentation/hwmon/tps40422.rst
> +F: Documentation/hwmon/ucd9000.rst
> +F: Documentation/hwmon/ucd9200.rst
> +F: Documentation/hwmon/zl6100.rst
> F: drivers/hwmon/pmbus/
> F: include/linux/pmbus.h
>
> @@ -12701,7 +12701,7 @@ M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
> L: linux-hwmon@vger.kernel.org
> S: Supported
> F: Documentation/devicetree/bindings/hwmon/pwm-fan.txt
> -F: Documentation/hwmon/pwm-fan
> +F: Documentation/hwmon/pwm-fan.rst
> F: drivers/hwmon/pwm-fan.c
>
> PWM IR Transmitter
> @@ -14366,21 +14366,21 @@ SMM665 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/smm665
> +F: Documentation/hwmon/smm665.rst
> F: drivers/hwmon/smm665.c
>
> SMSC EMC2103 HARDWARE MONITOR DRIVER
> M: Steve Glendinning <steve.glendinning@shawell.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/emc2103
> +F: Documentation/hwmon/emc2103.rst
> F: drivers/hwmon/emc2103.c
>
> SMSC SCH5627 HARDWARE MONITOR DRIVER
> M: Hans de Goede <hdegoede@redhat.com>
> L: linux-hwmon@vger.kernel.org
> S: Supported
> -F: Documentation/hwmon/sch5627
> +F: Documentation/hwmon/sch5627.rst
> F: drivers/hwmon/sch5627.c
>
> SMSC UFX6000 and UFX7000 USB to VGA DRIVER
> @@ -14393,7 +14393,7 @@ SMSC47B397 HARDWARE MONITOR DRIVER
> M: Jean Delvare <jdelvare@suse.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/smsc47b397
> +F: Documentation/hwmon/smsc47b397.rst
> F: drivers/hwmon/smsc47b397.c
>
> SMSC911x ETHERNET DRIVER
> @@ -15744,7 +15744,7 @@ TMP401 HARDWARE MONITOR DRIVER
> M: Guenter Roeck <linux@roeck-us.net>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/tmp401
> +F: Documentation/hwmon/tmp401.rst
> F: drivers/hwmon/tmp401.c
>
> TMPFS (SHMEM FILESYSTEM)
> @@ -16796,7 +16796,7 @@ VT1211 HARDWARE MONITOR DRIVER
> M: Juerg Haefliger <juergh@gmail.com>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/vt1211
> +F: Documentation/hwmon/vt1211.rst
> F: drivers/hwmon/vt1211.c
>
> VT8231 HARDWARE MONITOR DRIVER
> @@ -16824,14 +16824,14 @@ W83791D HARDWARE MONITORING DRIVER
> M: Marc Hulsman <m.hulsman@tudelft.nl>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/w83791d
> +F: Documentation/hwmon/w83791d.rst
> F: drivers/hwmon/w83791d.c
>
> W83793 HARDWARE MONITORING DRIVER
> M: Rudolf Marek <r.marek@assembler.cz>
> L: linux-hwmon@vger.kernel.org
> S: Maintained
> -F: Documentation/hwmon/w83793
> +F: Documentation/hwmon/w83793.rst
> F: drivers/hwmon/w83793.c
>
> W83795 HARDWARE MONITORING DRIVER
> @@ -16940,7 +16940,7 @@ L: patches@opensource.cirrus.com
> T: git https://github.com/CirrusLogic/linux-drivers.git
> W: https://github.com/CirrusLogic/linux-drivers/wiki
> S: Supported
> -F: Documentation/hwmon/wm83??
> +F: Documentation/hwmon/wm83??.rst
> F: Documentation/devicetree/bindings/extcon/extcon-arizona.txt
> F: Documentation/devicetree/bindings/regulator/arizona-regulator.txt
> F: Documentation/devicetree/bindings/mfd/arizona.txt
> diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
> index dedd5febd3aa..470ba66b18b0 100644
> --- a/drivers/hwmon/Kconfig
> +++ b/drivers/hwmon/Kconfig
> @@ -17,7 +17,7 @@ menuconfig HWMON
>
> To find out which specific driver(s) you need, use the
> sensors-detect script from the lm_sensors package. Read
> - <file:Documentation/hwmon/userspace-tools> for details.
> + <file:Documentation/hwmon/userspace-tools.rst> for details.
>
> This support can also be built as a module. If so, the module
> will be called hwmon.
> @@ -59,7 +59,7 @@ config SENSORS_ABITUGURU
> chip can be found on Abit uGuru featuring motherboards (most modern
> Abit motherboards from before end 2005). For more info and a list
> of which motherboards have which revision see
> - Documentation/hwmon/abituguru
> + Documentation/hwmon/abituguru.rst
>
> This driver can also be built as a module. If so, the module
> will be called abituguru.
> @@ -73,7 +73,7 @@ config SENSORS_ABITUGURU3
> and their settings is supported. The third revision of the Abit
> uGuru chip can be found on recent Abit motherboards (since end
> 2005). For more info and a list of which motherboards have which
> - revision see Documentation/hwmon/abituguru3
> + revision see Documentation/hwmon/abituguru3.rst
>
> This driver can also be built as a module. If so, the module
> will be called abituguru3.
> @@ -643,7 +643,7 @@ config SENSORS_CORETEMP
> help
> If you say yes here you get support for the temperature
> sensor inside your CPU. Most of the family 6 CPUs
> - are supported. Check Documentation/hwmon/coretemp for details.
> + are supported. Check Documentation/hwmon/coretemp.rst for details.
>
> config SENSORS_IT87
> tristate "ITE IT87xx and compatibles"
> diff --git a/drivers/hwmon/ads7828.c b/drivers/hwmon/ads7828.c
> index e6be617e3fb2..03d6e782777a 100644
> --- a/drivers/hwmon/ads7828.c
> +++ b/drivers/hwmon/ads7828.c
> @@ -8,7 +8,7 @@
> *
> * ADS7830 support, by Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
> *
> - * For further information, see the Documentation/hwmon/ads7828 file.
> + * For further information, see the Documentation/hwmon/ads7828.rst file.
> *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License as published by
> diff --git a/drivers/hwmon/max197.c b/drivers/hwmon/max197.c
> index 3d9e210beedf..dd6a35219a18 100644
> --- a/drivers/hwmon/max197.c
> +++ b/drivers/hwmon/max197.c
> @@ -8,7 +8,7 @@
> * it under the terms of the GNU General Public License version 2 as
> * published by the Free Software Foundation.
> *
> - * For further information, see the Documentation/hwmon/max197 file.
> + * For further information, see the Documentation/hwmon/max197.rst file.
> */
>
> #include <linux/kernel.h>
> diff --git a/drivers/hwmon/sht15.c b/drivers/hwmon/sht15.c
> index 39b41e35c2bf..7f4a63959730 100644
> --- a/drivers/hwmon/sht15.c
> +++ b/drivers/hwmon/sht15.c
> @@ -10,7 +10,7 @@
> *
> * Copyright (c) 2007 Wouter Horre
> *
> - * For further information, see the Documentation/hwmon/sht15 file.
> + * For further information, see the Documentation/hwmon/sht15.rst file.
> */
>
> #include <linux/interrupt.h>
> diff --git a/include/linux/platform_data/ads7828.h b/include/linux/platform_data/ads7828.h
> index 3245f45f9d77..a3370a007702 100644
> --- a/include/linux/platform_data/ads7828.h
> +++ b/include/linux/platform_data/ads7828.h
> @@ -4,7 +4,7 @@
> * Copyright (c) 2012 Savoir-faire Linux Inc.
> * Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> *
> - * For further information, see the Documentation/hwmon/ads7828 file.
> + * For further information, see the Documentation/hwmon/ads7828.rst file.
> *
> * This program is free software; you can redistribute it and/or modify
> * it under the terms of the GNU General Public License version 2 as
> diff --git a/include/linux/platform_data/ds620.h b/include/linux/platform_data/ds620.h
> index 6ef58bb77e46..f0ce22a78bb8 100644
> --- a/include/linux/platform_data/ds620.h
> +++ b/include/linux/platform_data/ds620.h
> @@ -14,7 +14,7 @@ struct ds620_platform_data {
> * 1 = PO_LOW
> * 2 = PO_HIGH
> *
> - * (see Documentation/hwmon/ds620)
> + * (see Documentation/hwmon/ds620.rst)
> */
> int pomode;
> };
> diff --git a/include/linux/platform_data/ina2xx.h b/include/linux/platform_data/ina2xx.h
> index 9f0aa1b48c78..dde59fd3590f 100644
> --- a/include/linux/platform_data/ina2xx.h
> +++ b/include/linux/platform_data/ina2xx.h
> @@ -7,7 +7,7 @@
> * it under the terms of the GNU General Public License version 2 as
> * published by the Free Software Foundation.
> *
> - * For further information, see the Documentation/hwmon/ina2xx file.
> + * For further information, see the Documentation/hwmon/ina2xx.rst file.
> */
>
> /**
> diff --git a/include/linux/platform_data/max197.h b/include/linux/platform_data/max197.h
> index 8da8f94ee15c..2bbd0919bc89 100644
> --- a/include/linux/platform_data/max197.h
> +++ b/include/linux/platform_data/max197.h
> @@ -8,7 +8,7 @@
> * it under the terms of the GNU General Public License version 2 as
> * published by the Free Software Foundation.
> *
> - * For further information, see the Documentation/hwmon/max197 file.
> + * For further information, see the Documentation/hwmon/max197.rst file.
> */
>
> #ifndef _PDATA_MAX197_H
> diff --git a/include/linux/platform_data/ntc_thermistor.h b/include/linux/platform_data/ntc_thermistor.h
> index ee03d429742b..5fa115d3ea4b 100644
> --- a/include/linux/platform_data/ntc_thermistor.h
> +++ b/include/linux/platform_data/ntc_thermistor.h
> @@ -42,7 +42,7 @@ struct ntc_thermistor_platform_data {
> * read_uV()
> *
> * How to setup pullup_ohm, pulldown_ohm, and connect is
> - * described at Documentation/hwmon/ntc_thermistor
> + * described at Documentation/hwmon/ntc_thermistor.rst
> *
> * pullup/down_ohm: 0 for infinite / not-connected
> *
> --
> 2.20.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯
^ permalink raw reply
* Re: [PATCH v3 7/8] powerpc/mm: Consolidate radix and hash address map details
From: Michael Ellerman @ 2019-04-17 12:34 UTC (permalink / raw)
To: Nicholas Piggin, Aneesh Kumar K.V, paulus; +Cc: linuxppc-dev
In-Reply-To: <1555422365.eio3zgx55b.astroid@bobo.none>
Nicholas Piggin <npiggin@gmail.com> writes:
> Aneesh Kumar K.V's on April 16, 2019 8:07 pm:
>> We now have
>>
>> 4K page size config
>>
>> kernel_region_map_size = 16TB
>> kernel vmalloc start = 0xc000100000000000
>> kernel IO start = 0xc000200000000000
>> kernel vmemmap start = 0xc000300000000000
>>
>> with 64K page size config:
>>
>> kernel_region_map_size = 512TB
>> kernel vmalloc start = 0xc008000000000000
>> kernel IO start = 0xc00a000000000000
>> kernel vmemmap start = 0xc00c000000000000
>
> Hey Aneesh,
>
> I like the series, I like consolidating the address spaces into 0xc,
> and making the layouts match or similar isn't a bad thing. I don't
> see any real reason to force limitations on one layout or another --
> you could make the argument that 4k radix should match 64k radix
> as much as matching 4k hash IMO.
I don't think I agree. The 4K and 64K layouts must be different because
the page size is different and therefore the span of the page tables is
different. (Unless you shrunk the 64K layouts to match 4K but that would
be silly)
On the other hand there's no good reason why hash & radix need to
differ, it's just that radix has a more strictly defined layout and it
didn't match what hash used when we added radix. We really should have
done this realignment of the hash address ranges before we merged radix.
> I wouldn't like to tie them too strongly to the same base defines
> that force them to stay in sync.
>
> Can we drop this patch? Or at least keep the users of the H_ and R_
> defines and set them to the same thing in map.h?
I don't understand why that would be a good thing?
We have all this indirection through variables at the moment, for what
appear to be constants. It makes the code harder to follow and it's less
efficient as well.
cheers
^ permalink raw reply
* [PATCH v4 1/8] powerpc/mm/hash64: Add a variable to track the end of IO mapping
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
This makes it easy to update the region mapping in the later patch
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/hash.h | 3 ++-
arch/powerpc/include/asm/book3s/64/pgtable.h | 8 +++++---
arch/powerpc/include/asm/book3s/64/radix.h | 1 +
arch/powerpc/mm/hash_utils_64.c | 1 +
arch/powerpc/mm/pgtable-radix.c | 1 +
arch/powerpc/mm/pgtable_64.c | 2 ++
6 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
index 54b7af6cd27f..8cbc4106d449 100644
--- a/arch/powerpc/include/asm/book3s/64/hash.h
+++ b/arch/powerpc/include/asm/book3s/64/hash.h
@@ -69,7 +69,8 @@
#define H_VMALLOC_SIZE (H_KERN_VIRT_SIZE - H_KERN_IO_SIZE)
#define H_VMALLOC_END (H_VMALLOC_START + H_VMALLOC_SIZE)
-#define H_KERN_IO_START H_VMALLOC_END
+#define H_KERN_IO_START H_VMALLOC_END
+#define H_KERN_IO_END (H_KERN_VIRT_START + H_KERN_VIRT_SIZE)
/*
* Region IDs
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
index 581f91be9dd4..51190a6d1c8a 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -277,9 +277,12 @@ extern unsigned long __vmalloc_end;
extern unsigned long __kernel_virt_start;
extern unsigned long __kernel_virt_size;
extern unsigned long __kernel_io_start;
+extern unsigned long __kernel_io_end;
#define KERN_VIRT_START __kernel_virt_start
#define KERN_VIRT_SIZE __kernel_virt_size
#define KERN_IO_START __kernel_io_start
+#define KERN_IO_END __kernel_io_end
+
extern struct page *vmemmap;
extern unsigned long ioremap_bot;
extern unsigned long pci_io_base;
@@ -296,8 +299,7 @@ extern unsigned long pci_io_base;
#include <asm/barrier.h>
/*
- * The second half of the kernel virtual space is used for IO mappings,
- * it's itself carved into the PIO region (ISA and PHB IO space) and
+ * IO space itself carved into the PIO region (ISA and PHB IO space) and
* the ioremap space
*
* ISA_IO_BASE = KERN_IO_START, 64K reserved area
@@ -310,7 +312,7 @@ extern unsigned long pci_io_base;
#define PHB_IO_BASE (ISA_IO_END)
#define PHB_IO_END (KERN_IO_START + FULL_IO_SIZE)
#define IOREMAP_BASE (PHB_IO_END)
-#define IOREMAP_END (KERN_VIRT_START + KERN_VIRT_SIZE)
+#define IOREMAP_END (KERN_IO_END)
/* Advertise special mapping type for AGP */
#define HAVE_PAGE_AGP
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h
index 5ab134eeed20..6d760a083d62 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -111,6 +111,7 @@
#define RADIX_VMEMMAP_BASE (RADIX_VMALLOC_END)
#define RADIX_KERN_IO_START (RADIX_KERN_VIRT_START + (RADIX_KERN_VIRT_SIZE >> 1))
+#define RADIX_KERN_IO_END (RADIX_KERN_VIRT_START + RADIX_KERN_VIRT_SIZE)
#ifndef __ASSEMBLY__
#define RADIX_PTE_TABLE_SIZE (sizeof(pte_t) << RADIX_PTE_INDEX_SIZE)
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 0a4f939a8161..394dd969002f 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -1017,6 +1017,7 @@ void __init hash__early_init_mmu(void)
__vmalloc_start = H_VMALLOC_START;
__vmalloc_end = H_VMALLOC_END;
__kernel_io_start = H_KERN_IO_START;
+ __kernel_io_end = H_KERN_IO_END;
vmemmap = (struct page *)H_VMEMMAP_BASE;
ioremap_bot = IOREMAP_BASE;
diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
index 154472a28c77..bca1bf66c56e 100644
--- a/arch/powerpc/mm/pgtable-radix.c
+++ b/arch/powerpc/mm/pgtable-radix.c
@@ -578,6 +578,7 @@ void __init radix__early_init_mmu(void)
__vmalloc_start = RADIX_VMALLOC_START;
__vmalloc_end = RADIX_VMALLOC_END;
__kernel_io_start = RADIX_KERN_IO_START;
+ __kernel_io_end = RADIX_KERN_IO_END;
vmemmap = (struct page *)RADIX_VMEMMAP_BASE;
ioremap_bot = IOREMAP_BASE;
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index fb1375c07e8c..7cea39bdf05f 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -98,6 +98,8 @@ unsigned long __vmalloc_end;
EXPORT_SYMBOL(__vmalloc_end);
unsigned long __kernel_io_start;
EXPORT_SYMBOL(__kernel_io_start);
+unsigned long __kernel_io_end;
+EXPORT_SYMBOL(__kernel_io_end);
struct page *vmemmap;
EXPORT_SYMBOL(vmemmap);
unsigned long __pte_frag_nr;
--
2.20.1
^ permalink raw reply related
* [PATCH v4 0/8] Update hash MMU kernel mapping to be in sync with radix
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
This patch series map all the kernel regions (vmalloc, IO and vmemmap) using
0xc top nibble address. This brings hash translation kernel mapping in sync with radix.
Each of these regions can now map 512TB. We use one context to map these
regions and hence the 512TB limit. We also update radix to use the same limit even though
we don't have context related restrictions there.
With this we have for 4K
kernel vmalloc start = 0xc008000000000000
kernel IO start = 0xc008100000000000
kernel vmemmap start = 0xc008200000000000
64K hash, 64K radix and 4k radix:
kernel vmalloc start = 0xc008000000000000
kernel IO start = 0xc00a000000000000
kernel vmemmap start = 0xc00c000000000000
Changes from v3:
* Make 4k page size hash translation vmalloc start address to be
same as hash 64k and radix.
Aneesh Kumar K.V (8):
powerpc/mm/hash64: Add a variable to track the end of IO mapping
powerpc/mm/hash64: Map all the kernel regions in the same 0xc range
powerpc/mm: Validate address values against different region limits
powerpc/mm: Drop the unnecessary region check
powerpc/mm/hash: Simplify the region id calculation.
powerpc/mm: Print kernel map details to dmesg
powerpc/mm/hash: Rename KERNEL_REGION_ID to LINEAR_MAP_REGION_ID
powerpc/mm/hash/4K: Update the vmalloc start for hash 4K config
arch/powerpc/include/asm/book3s/64/hash-4k.h | 21 ++++
arch/powerpc/include/asm/book3s/64/hash-64k.h | 12 +++
arch/powerpc/include/asm/book3s/64/hash.h | 95 ++++++++++++-------
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 42 ++++----
arch/powerpc/include/asm/book3s/64/mmu.h | 9 +-
arch/powerpc/include/asm/book3s/64/pgtable.h | 9 +-
arch/powerpc/include/asm/book3s/64/radix.h | 40 ++++----
arch/powerpc/include/asm/page.h | 11 ---
arch/powerpc/kernel/setup-common.c | 3 +
arch/powerpc/kvm/book3s_hv_rm_xics.c | 2 +-
arch/powerpc/mm/copro_fault.c | 18 ++--
arch/powerpc/mm/hash_utils_64.c | 45 ++++++---
arch/powerpc/mm/pgtable-hash64.c | 13 ++-
arch/powerpc/mm/pgtable-radix.c | 24 ++++-
arch/powerpc/mm/pgtable_64.c | 9 +-
arch/powerpc/mm/ptdump/hashpagetable.c | 2 +-
arch/powerpc/mm/ptdump/ptdump.c | 3 +-
arch/powerpc/mm/slb.c | 26 +++--
arch/powerpc/platforms/cell/spu_base.c | 4 +-
drivers/misc/cxl/fault.c | 2 +-
drivers/misc/ocxl/link.c | 2 +-
21 files changed, 254 insertions(+), 138 deletions(-)
--
2.20.1
^ permalink raw reply
* [PATCH v4 2/8] powerpc/mm/hash64: Map all the kernel regions in the same 0xc range
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
This patch maps vmalloc, IO and vmemap regions in the 0xc address range
instead of the current 0xd and 0xf range. This brings the mapping closer
to radix translation mode.
With hash 64K page size each of this region is 512TB whereas with 4K config
we are limited by the max page table range of 64TB and hence there regions
are of 16TB size.
The kernel mapping is now:
On 4K hash
kernel_region_map_size = 16TB
kernel vmalloc start = 0xc000100000000000
kernel IO start = 0xc000200000000000
kernel vmemmap start = 0xc000300000000000
64K hash, 64K radix and 4k radix:
kernel_region_map_size = 512TB
kernel vmalloc start = 0xc008000000000000
kernel IO start = 0xc00a000000000000
kernel vmemmap start = 0xc00c000000000000
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/hash-4k.h | 13 +++
arch/powerpc/include/asm/book3s/64/hash-64k.h | 11 +++
arch/powerpc/include/asm/book3s/64/hash.h | 95 ++++++++++++-------
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 31 +++---
arch/powerpc/include/asm/book3s/64/pgtable.h | 1 -
arch/powerpc/include/asm/book3s/64/radix.h | 41 ++++----
arch/powerpc/include/asm/page.h | 3 +-
arch/powerpc/kvm/book3s_hv_rm_xics.c | 2 +-
arch/powerpc/mm/copro_fault.c | 14 ++-
arch/powerpc/mm/hash_utils_64.c | 26 ++---
arch/powerpc/mm/pgtable-radix.c | 7 +-
arch/powerpc/mm/pgtable_64.c | 2 -
arch/powerpc/mm/ptdump/hashpagetable.c | 2 +-
arch/powerpc/mm/ptdump/ptdump.c | 3 +-
arch/powerpc/mm/slb.c | 22 +++--
arch/powerpc/platforms/cell/spu_base.c | 4 +-
drivers/misc/cxl/fault.c | 2 +-
drivers/misc/ocxl/link.c | 2 +-
18 files changed, 172 insertions(+), 109 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h
index cf5ba5254299..0dd62287f56c 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h
@@ -13,6 +13,19 @@
*/
#define MAX_EA_BITS_PER_CONTEXT 46
+/*
+ * Our page table limit us to 64TB. Hence for the kernel mapping,
+ * each MAP area is limited to 16 TB.
+ * The four map areas are: linear mapping, vmap, IO and vmemmap
+ */
+#define H_KERN_MAP_SIZE (ASM_CONST(1) << (MAX_EA_BITS_PER_CONTEXT - 2))
+
+/*
+ * Define the address range of the kernel non-linear virtual area
+ * 16TB
+ */
+#define H_KERN_VIRT_START ASM_CONST(0xc000100000000000)
+
#ifndef __ASSEMBLY__
#define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE)
#define H_PMD_TABLE_SIZE (sizeof(pmd_t) << H_PMD_INDEX_SIZE)
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h
index f82ee8a3b561..e392cf17b457 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h
@@ -13,6 +13,17 @@
*/
#define MAX_EA_BITS_PER_CONTEXT 49
+/*
+ * We use one context for each MAP area.
+ */
+#define H_KERN_MAP_SIZE (1UL << MAX_EA_BITS_PER_CONTEXT)
+
+/*
+ * Define the address range of the kernel non-linear virtual area
+ * 2PB
+ */
+#define H_KERN_VIRT_START ASM_CONST(0xc008000000000000)
+
/*
* 64k aligned address free up few of the lower bits of RPN for us
* We steal that here. For more deatils look at pte_pfn/pfn_pte()
diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
index 8cbc4106d449..76741a221910 100644
--- a/arch/powerpc/include/asm/book3s/64/hash.h
+++ b/arch/powerpc/include/asm/book3s/64/hash.h
@@ -29,6 +29,10 @@
#define H_PGTABLE_EADDR_SIZE (H_PTE_INDEX_SIZE + H_PMD_INDEX_SIZE + \
H_PUD_INDEX_SIZE + H_PGD_INDEX_SIZE + PAGE_SHIFT)
#define H_PGTABLE_RANGE (ASM_CONST(1) << H_PGTABLE_EADDR_SIZE)
+/*
+ * Top 2 bits are ignored in page table walk.
+ */
+#define EA_MASK (~(0xcUL << 60))
/*
* We store the slot details in the second half of page table.
@@ -42,53 +46,56 @@
#endif
/*
- * Define the address range of the kernel non-linear virtual area. In contrast
- * to the linear mapping, this is managed using the kernel page tables and then
- * inserted into the hash page table to actually take effect, similarly to user
- * mappings.
+ * +------------------------------+
+ * | |
+ * | |
+ * | |
+ * +------------------------------+ Kernel virtual map end (0xc00e000000000000)
+ * | |
+ * | |
+ * | 512TB/16TB of vmemmap |
+ * | |
+ * | |
+ * +------------------------------+ Kernel vmemmap start
+ * | |
+ * | 512TB/16TB of IO map |
+ * | |
+ * +------------------------------+ Kernel IO map start
+ * | |
+ * | 512TB/16TB of vmap |
+ * | |
+ * +------------------------------+ Kernel virt start (0xc008000000000000)
+ * | |
+ * | |
+ * | |
+ * +------------------------------+ Kernel linear (0xc.....)
*/
-#define H_KERN_VIRT_START ASM_CONST(0xD000000000000000)
-/*
- * Allow virtual mapping of one context size.
- * 512TB for 64K page size
- * 64TB for 4K page size
- */
-#define H_KERN_VIRT_SIZE (1UL << MAX_EA_BITS_PER_CONTEXT)
+#define H_VMALLOC_START H_KERN_VIRT_START
+#define H_VMALLOC_SIZE H_KERN_MAP_SIZE
+#define H_VMALLOC_END (H_VMALLOC_START + H_VMALLOC_SIZE)
-/*
- * 8TB IO mapping size
- */
-#define H_KERN_IO_SIZE ASM_CONST(0x80000000000) /* 8T */
-
-/*
- * The vmalloc space starts at the beginning of the kernel non-linear virtual
- * region, and occupies 504T (64K) or 56T (4K)
- */
-#define H_VMALLOC_START H_KERN_VIRT_START
-#define H_VMALLOC_SIZE (H_KERN_VIRT_SIZE - H_KERN_IO_SIZE)
-#define H_VMALLOC_END (H_VMALLOC_START + H_VMALLOC_SIZE)
+#define H_KERN_IO_START H_VMALLOC_END
+#define H_KERN_IO_SIZE H_KERN_MAP_SIZE
+#define H_KERN_IO_END (H_KERN_IO_START + H_KERN_IO_SIZE)
-#define H_KERN_IO_START H_VMALLOC_END
-#define H_KERN_IO_END (H_KERN_VIRT_START + H_KERN_VIRT_SIZE)
+#define H_VMEMMAP_START H_KERN_IO_END
+#define H_VMEMMAP_SIZE H_KERN_MAP_SIZE
+#define H_VMEMMAP_END (H_VMEMMAP_START + H_VMEMMAP_SIZE)
/*
* Region IDs
*/
-#define REGION_SHIFT 60UL
-#define REGION_MASK (0xfUL << REGION_SHIFT)
-#define REGION_ID(ea) (((unsigned long)(ea)) >> REGION_SHIFT)
-
-#define VMALLOC_REGION_ID (REGION_ID(H_VMALLOC_START))
-#define KERNEL_REGION_ID (REGION_ID(PAGE_OFFSET))
-#define VMEMMAP_REGION_ID (0xfUL) /* Server only */
-#define USER_REGION_ID (0UL)
+#define USER_REGION_ID 1
+#define KERNEL_REGION_ID 2
+#define VMALLOC_REGION_ID 3
+#define IO_REGION_ID 4
+#define VMEMMAP_REGION_ID 5
/*
* Defines the address of the vmemap area, in its own region on
* hash table CPUs.
*/
-#define H_VMEMMAP_BASE (VMEMMAP_REGION_ID << REGION_SHIFT)
#ifdef CONFIG_PPC_MM_SLICES
#define HAVE_ARCH_UNMAPPED_AREA
@@ -104,6 +111,26 @@
#define H_PUD_BAD_BITS (PMD_TABLE_SIZE-1)
#ifndef __ASSEMBLY__
+static inline int get_region_id(unsigned long ea)
+{
+ int id = (ea >> 60UL);
+
+ if (id == 0)
+ return USER_REGION_ID;
+
+ VM_BUG_ON(id != 0xc);
+ VM_BUG_ON(ea >= H_VMEMMAP_END);
+
+ if (ea >= H_VMEMMAP_START)
+ return VMEMMAP_REGION_ID;
+ else if (ea >= H_KERN_IO_START)
+ return IO_REGION_ID;
+ else if (ea >= H_VMALLOC_START)
+ return VMALLOC_REGION_ID;
+
+ return KERNEL_REGION_ID;
+}
+
#define hash__pmd_bad(pmd) (pmd_val(pmd) & H_PMD_BAD_BITS)
#define hash__pud_bad(pud) (pud_val(pud) & H_PUD_BAD_BITS)
static inline int hash__pgd_bad(pgd_t pgd)
diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
index a28a28079edb..b3f256c042aa 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
@@ -588,7 +588,8 @@ extern void slb_set_size(u16 size);
#endif
#define MAX_VMALLOC_CTX_CNT 1
-#define MAX_MEMMAP_CTX_CNT 1
+#define MAX_IO_CTX_CNT 1
+#define MAX_VMEMMAP_CTX_CNT 1
/*
* 256MB segment
@@ -601,13 +602,10 @@ extern void slb_set_size(u16 size);
* would give a protovsid of 0x1fffffffff. That will result in a VSID 0
* because of the modulo operation in vsid scramble.
*
- * We add one extra context to MIN_USER_CONTEXT so that we can map kernel
- * context easily. The +1 is to map the unused 0xe region mapping.
*/
#define MAX_USER_CONTEXT ((ASM_CONST(1) << CONTEXT_BITS) - 2)
#define MIN_USER_CONTEXT (MAX_KERNEL_CTX_CNT + MAX_VMALLOC_CTX_CNT + \
- MAX_MEMMAP_CTX_CNT + 2)
-
+ MAX_IO_CTX_CNT + MAX_VMEMMAP_CTX_CNT)
/*
* For platforms that support on 65bit VA we limit the context bits
*/
@@ -747,7 +745,7 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
/*
* Bad address. We return VSID 0 for that
*/
- if ((ea & ~REGION_MASK) >= H_PGTABLE_RANGE)
+ if ((ea & EA_MASK) >= H_PGTABLE_RANGE)
return 0;
if (!mmu_has_feature(MMU_FTR_68_BIT_VA))
@@ -774,28 +772,29 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
* 0x00002 - [ 0xc002000000000000 - 0xc003ffffffffffff]
* 0x00003 - [ 0xc004000000000000 - 0xc005ffffffffffff]
* 0x00004 - [ 0xc006000000000000 - 0xc007ffffffffffff]
-
- * 0x00005 - [ 0xd000000000000000 - 0xd001ffffffffffff ]
- * 0x00006 - Not used - Can map 0xe000000000000000 range.
- * 0x00007 - [ 0xf000000000000000 - 0xf001ffffffffffff ]
*
- * So we can compute the context from the region (top nibble) by
- * subtracting 11, or 0xc - 1.
+ * vmap, IO, vmemap
+ *
+ * 0x00005 - [ 0xc008000000000000 - 0xc009ffffffffffff]
+ * 0x00006 - [ 0xc00a000000000000 - 0xc00bffffffffffff]
+ * 0x00007 - [ 0xc00c000000000000 - 0xc00dffffffffffff]
+ *
*/
static inline unsigned long get_kernel_context(unsigned long ea)
{
- unsigned long region_id = REGION_ID(ea);
+ unsigned long region_id = get_region_id(ea);
unsigned long ctx;
/*
- * For linear mapping we do support multiple context
+ * Depending on Kernel config, kernel region can have one context
+ * or more.
*/
if (region_id == KERNEL_REGION_ID) {
/*
* We already verified ea to be not beyond the addr limit.
*/
- ctx = 1 + ((ea & ~REGION_MASK) >> MAX_EA_BITS_PER_CONTEXT);
+ ctx = 1 + ((ea & EA_MASK) >> MAX_EA_BITS_PER_CONTEXT);
} else
- ctx = (region_id - 0xc) + MAX_KERNEL_CTX_CNT;
+ ctx = region_id + MAX_KERNEL_CTX_CNT - 2;
return ctx;
}
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
index 51190a6d1c8a..8c156c5b4cd5 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -279,7 +279,6 @@ extern unsigned long __kernel_virt_size;
extern unsigned long __kernel_io_start;
extern unsigned long __kernel_io_end;
#define KERN_VIRT_START __kernel_virt_start
-#define KERN_VIRT_SIZE __kernel_virt_size
#define KERN_IO_START __kernel_io_start
#define KERN_IO_END __kernel_io_end
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h
index 6d760a083d62..574eca33f893 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -72,19 +72,17 @@
* | |
* | |
* | |
- * +------------------------------+ Kernel IO map end (0xc010000000000000)
+ * +------------------------------+ Kernel vmemmap end (0xc010000000000000)
* | |
+ * | 512TB |
* | |
- * | 1/2 of virtual map |
+ * +------------------------------+ Kernel IO map end/vmemap start
* | |
+ * | 512TB |
* | |
- * +------------------------------+ Kernel IO map start
+ * +------------------------------+ Kernel vmap end/ IO map start
* | |
- * | 1/4 of virtual map |
- * | |
- * +------------------------------+ Kernel vmemap start
- * | |
- * | 1/4 of virtual map |
+ * | 512TB |
* | |
* +------------------------------+ Kernel virt start (0xc008000000000000)
* | |
@@ -93,25 +91,24 @@
* +------------------------------+ Kernel linear (0xc.....)
*/
-#define RADIX_KERN_VIRT_START ASM_CONST(0xc008000000000000)
-#define RADIX_KERN_VIRT_SIZE ASM_CONST(0x0008000000000000)
-
+#define RADIX_KERN_VIRT_START ASM_CONST(0xc008000000000000)
/*
- * The vmalloc space starts at the beginning of that region, and
- * occupies a quarter of it on radix config.
- * (we keep a quarter for the virtual memmap)
+ * 49 = MAX_EA_BITS_PER_CONTEXT (hash specific). To make sure we pick
+ * the same value as hash.
*/
+#define RADIX_KERN_MAP_SIZE (1UL << 49)
+
#define RADIX_VMALLOC_START RADIX_KERN_VIRT_START
-#define RADIX_VMALLOC_SIZE (RADIX_KERN_VIRT_SIZE >> 2)
+#define RADIX_VMALLOC_SIZE RADIX_KERN_MAP_SIZE
#define RADIX_VMALLOC_END (RADIX_VMALLOC_START + RADIX_VMALLOC_SIZE)
-/*
- * Defines the address of the vmemap area, in its own region on
- * hash table CPUs.
- */
-#define RADIX_VMEMMAP_BASE (RADIX_VMALLOC_END)
-#define RADIX_KERN_IO_START (RADIX_KERN_VIRT_START + (RADIX_KERN_VIRT_SIZE >> 1))
-#define RADIX_KERN_IO_END (RADIX_KERN_VIRT_START + RADIX_KERN_VIRT_SIZE)
+#define RADIX_KERN_IO_START RADIX_VMALLOC_END
+#define RADIX_KERN_IO_SIZE RADIX_KERN_MAP_SIZE
+#define RADIX_KERN_IO_END (RADIX_KERN_IO_START + RADIX_KERN_IO_SIZE)
+
+#define RADIX_VMEMMAP_START RADIX_KERN_IO_END
+#define RADIX_VMEMMAP_SIZE RADIX_KERN_MAP_SIZE
+#define RADIX_VMEMMAP_END (RADIX_VMEMMAP_START + RADIX_VMEMMAP_SIZE)
#ifndef __ASSEMBLY__
#define RADIX_PTE_TABLE_SIZE (sizeof(pte_t) << RADIX_PTE_INDEX_SIZE)
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index ed870468ef6f..918228f2205b 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -139,7 +139,8 @@ static inline bool pfn_valid(unsigned long pfn)
* return true for some vmalloc addresses, which is incorrect. So explicitly
* check that the address is in the kernel region.
*/
-#define virt_addr_valid(kaddr) (REGION_ID(kaddr) == KERNEL_REGION_ID && \
+/* may be can drop get_region_id */
+#define virt_addr_valid(kaddr) (get_region_id((unsigned long)kaddr) == KERNEL_REGION_ID && \
pfn_valid(virt_to_pfn(kaddr)))
#else
#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr))
diff --git a/arch/powerpc/kvm/book3s_hv_rm_xics.c b/arch/powerpc/kvm/book3s_hv_rm_xics.c
index 3b9662a4207e..085509148d95 100644
--- a/arch/powerpc/kvm/book3s_hv_rm_xics.c
+++ b/arch/powerpc/kvm/book3s_hv_rm_xics.c
@@ -822,7 +822,7 @@ static inline void this_cpu_inc_rm(unsigned int __percpu *addr)
raddr = per_cpu_ptr(addr, cpu);
l = (unsigned long)raddr;
- if (REGION_ID(l) == VMALLOC_REGION_ID) {
+ if (get_region_id(l) == VMALLOC_REGION_ID) {
l = vmalloc_to_phys(raddr);
raddr = (unsigned int *)l;
}
diff --git a/arch/powerpc/mm/copro_fault.c b/arch/powerpc/mm/copro_fault.c
index c8da352e8686..9b0321061bc8 100644
--- a/arch/powerpc/mm/copro_fault.c
+++ b/arch/powerpc/mm/copro_fault.c
@@ -105,7 +105,7 @@ int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb)
u64 vsid, vsidkey;
int psize, ssize;
- switch (REGION_ID(ea)) {
+ switch (get_region_id(ea)) {
case USER_REGION_ID:
pr_devel("%s: 0x%llx -- USER_REGION_ID\n", __func__, ea);
if (mm == NULL)
@@ -117,10 +117,14 @@ int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb)
break;
case VMALLOC_REGION_ID:
pr_devel("%s: 0x%llx -- VMALLOC_REGION_ID\n", __func__, ea);
- if (ea < VMALLOC_END)
- psize = mmu_vmalloc_psize;
- else
- psize = mmu_io_psize;
+ psize = mmu_vmalloc_psize;
+ ssize = mmu_kernel_ssize;
+ vsid = get_kernel_vsid(ea, mmu_kernel_ssize);
+ vsidkey = SLB_VSID_KERNEL;
+ break;
+ case IO_REGION_ID:
+ pr_devel("%s: 0x%llx -- IO_REGION_ID\n", __func__, ea);
+ psize = mmu_io_psize;
ssize = mmu_kernel_ssize;
vsid = get_kernel_vsid(ea, mmu_kernel_ssize);
vsidkey = SLB_VSID_KERNEL;
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 394dd969002f..c6b39e7694ba 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -1013,12 +1013,11 @@ void __init hash__early_init_mmu(void)
__pgd_val_bits = HASH_PGD_VAL_BITS;
__kernel_virt_start = H_KERN_VIRT_START;
- __kernel_virt_size = H_KERN_VIRT_SIZE;
__vmalloc_start = H_VMALLOC_START;
__vmalloc_end = H_VMALLOC_END;
__kernel_io_start = H_KERN_IO_START;
__kernel_io_end = H_KERN_IO_END;
- vmemmap = (struct page *)H_VMEMMAP_BASE;
+ vmemmap = (struct page *)H_VMEMMAP_START;
ioremap_bot = IOREMAP_BASE;
#ifdef CONFIG_PCI
@@ -1239,7 +1238,7 @@ int hash_page_mm(struct mm_struct *mm, unsigned long ea,
trace_hash_fault(ea, access, trap);
/* Get region & vsid */
- switch (REGION_ID(ea)) {
+ switch (get_region_id(ea)) {
case USER_REGION_ID:
user_region = 1;
if (! mm) {
@@ -1253,10 +1252,13 @@ int hash_page_mm(struct mm_struct *mm, unsigned long ea,
break;
case VMALLOC_REGION_ID:
vsid = get_kernel_vsid(ea, mmu_kernel_ssize);
- if (ea < VMALLOC_END)
- psize = mmu_vmalloc_psize;
- else
- psize = mmu_io_psize;
+ psize = mmu_vmalloc_psize;
+ ssize = mmu_kernel_ssize;
+ break;
+
+ case IO_REGION_ID:
+ vsid = get_kernel_vsid(ea, mmu_kernel_ssize);
+ psize = mmu_io_psize;
ssize = mmu_kernel_ssize;
break;
default:
@@ -1422,7 +1424,8 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap,
unsigned long flags = 0;
struct mm_struct *mm = current->mm;
- if (REGION_ID(ea) == VMALLOC_REGION_ID)
+ if ((get_region_id(ea) == VMALLOC_REGION_ID) ||
+ (get_region_id(ea) == IO_REGION_ID))
mm = &init_mm;
if (dsisr & DSISR_NOHPTE)
@@ -1438,8 +1441,9 @@ int __hash_page(unsigned long ea, unsigned long msr, unsigned long trap,
unsigned long access = _PAGE_PRESENT | _PAGE_READ;
unsigned long flags = 0;
struct mm_struct *mm = current->mm;
+ unsigned int region_id = get_region_id(ea);
- if (REGION_ID(ea) == VMALLOC_REGION_ID)
+ if ((region_id == VMALLOC_REGION_ID) || (region_id == IO_REGION_ID))
mm = &init_mm;
if (dsisr & DSISR_NOHPTE)
@@ -1456,7 +1460,7 @@ int __hash_page(unsigned long ea, unsigned long msr, unsigned long trap,
* 2) user space access kernel space.
*/
access |= _PAGE_PRIVILEGED;
- if ((msr & MSR_PR) || (REGION_ID(ea) == USER_REGION_ID))
+ if ((msr & MSR_PR) || (region_id == USER_REGION_ID))
access &= ~_PAGE_PRIVILEGED;
if (trap == 0x400)
@@ -1500,7 +1504,7 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
int rc, ssize, update_flags = 0;
unsigned long access = _PAGE_PRESENT | _PAGE_READ | (is_exec ? _PAGE_EXEC : 0);
- BUG_ON(REGION_ID(ea) != USER_REGION_ID);
+ BUG_ON(get_region_id(ea) != USER_REGION_ID);
if (!should_hash_preload(mm, ea))
return;
diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
index bca1bf66c56e..94b18996e1b0 100644
--- a/arch/powerpc/mm/pgtable-radix.c
+++ b/arch/powerpc/mm/pgtable-radix.c
@@ -135,6 +135,10 @@ static int __map_kernel_page(unsigned long ea, unsigned long pa,
*/
BUILD_BUG_ON(TASK_SIZE_USER64 > RADIX_PGTABLE_RANGE);
+#ifdef CONFIG_PPC_64K_PAGES
+ BUILD_BUG_ON(RADIX_KERN_MAP_SIZE != MAX_EA_BITS_PER_CONTEXT);
+#endif
+
if (unlikely(!slab_is_available()))
return early_map_kernel_page(ea, pa, flags, map_page_size,
nid, region_start, region_end);
@@ -574,12 +578,11 @@ void __init radix__early_init_mmu(void)
__pgd_val_bits = RADIX_PGD_VAL_BITS;
__kernel_virt_start = RADIX_KERN_VIRT_START;
- __kernel_virt_size = RADIX_KERN_VIRT_SIZE;
__vmalloc_start = RADIX_VMALLOC_START;
__vmalloc_end = RADIX_VMALLOC_END;
__kernel_io_start = RADIX_KERN_IO_START;
__kernel_io_end = RADIX_KERN_IO_END;
- vmemmap = (struct page *)RADIX_VMEMMAP_BASE;
+ vmemmap = (struct page *)RADIX_VMEMMAP_START;
ioremap_bot = IOREMAP_BASE;
#ifdef CONFIG_PCI
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index 7cea39bdf05f..56068cac2a3c 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -90,8 +90,6 @@ unsigned long __pgd_val_bits;
EXPORT_SYMBOL(__pgd_val_bits);
unsigned long __kernel_virt_start;
EXPORT_SYMBOL(__kernel_virt_start);
-unsigned long __kernel_virt_size;
-EXPORT_SYMBOL(__kernel_virt_size);
unsigned long __vmalloc_start;
EXPORT_SYMBOL(__vmalloc_start);
unsigned long __vmalloc_end;
diff --git a/arch/powerpc/mm/ptdump/hashpagetable.c b/arch/powerpc/mm/ptdump/hashpagetable.c
index b430e4e08af6..b9bda0105841 100644
--- a/arch/powerpc/mm/ptdump/hashpagetable.c
+++ b/arch/powerpc/mm/ptdump/hashpagetable.c
@@ -500,7 +500,7 @@ static void populate_markers(void)
address_markers[7].start_address = IOREMAP_BASE;
address_markers[8].start_address = IOREMAP_END;
#ifdef CONFIG_PPC_BOOK3S_64
- address_markers[9].start_address = H_VMEMMAP_BASE;
+ address_markers[9].start_address = H_VMEMMAP_START;
#else
address_markers[9].start_address = VMEMMAP_BASE;
#endif
diff --git a/arch/powerpc/mm/ptdump/ptdump.c b/arch/powerpc/mm/ptdump/ptdump.c
index 37138428ab55..63fc56feea15 100644
--- a/arch/powerpc/mm/ptdump/ptdump.c
+++ b/arch/powerpc/mm/ptdump/ptdump.c
@@ -303,8 +303,9 @@ static void populate_markers(void)
address_markers[i++].start_address = PHB_IO_END;
address_markers[i++].start_address = IOREMAP_BASE;
address_markers[i++].start_address = IOREMAP_END;
+ /* What is the ifdef about? */
#ifdef CONFIG_PPC_BOOK3S_64
- address_markers[i++].start_address = H_VMEMMAP_BASE;
+ address_markers[i++].start_address = H_VMEMMAP_START;
#else
address_markers[i++].start_address = VMEMMAP_BASE;
#endif
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index 5986df48359b..a0c37f428d60 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -694,7 +694,7 @@ static long slb_allocate_kernel(unsigned long ea, unsigned long id)
if (id == KERNEL_REGION_ID) {
/* We only support upto MAX_PHYSMEM_BITS */
- if ((ea & ~REGION_MASK) > (1UL << MAX_PHYSMEM_BITS))
+ if ((ea & EA_MASK) > (1UL << MAX_PHYSMEM_BITS))
return -EFAULT;
flags = SLB_VSID_KERNEL | mmu_psize_defs[mmu_linear_psize].sllp;
@@ -702,20 +702,25 @@ static long slb_allocate_kernel(unsigned long ea, unsigned long id)
#ifdef CONFIG_SPARSEMEM_VMEMMAP
} else if (id == VMEMMAP_REGION_ID) {
- if ((ea & ~REGION_MASK) >= (1ULL << MAX_EA_BITS_PER_CONTEXT))
+ if (ea >= H_VMEMMAP_END)
return -EFAULT;
flags = SLB_VSID_KERNEL | mmu_psize_defs[mmu_vmemmap_psize].sllp;
#endif
} else if (id == VMALLOC_REGION_ID) {
- if ((ea & ~REGION_MASK) >= (1ULL << MAX_EA_BITS_PER_CONTEXT))
+ if (ea >= H_VMALLOC_END)
return -EFAULT;
- if (ea < H_VMALLOC_END)
- flags = local_paca->vmalloc_sllp;
- else
- flags = SLB_VSID_KERNEL | mmu_psize_defs[mmu_io_psize].sllp;
+ flags = local_paca->vmalloc_sllp;
+
+ } else if (id == IO_REGION_ID) {
+
+ if (ea >= H_KERN_IO_END)
+ return -EFAULT;
+
+ flags = SLB_VSID_KERNEL | mmu_psize_defs[mmu_io_psize].sllp;
+
} else {
return -EFAULT;
}
@@ -725,6 +730,7 @@ static long slb_allocate_kernel(unsigned long ea, unsigned long id)
ssize = MMU_SEGSIZE_256M;
context = get_kernel_context(ea);
+
return slb_insert_entry(ea, context, flags, ssize, true);
}
@@ -761,7 +767,7 @@ static long slb_allocate_user(struct mm_struct *mm, unsigned long ea)
long do_slb_fault(struct pt_regs *regs, unsigned long ea)
{
- unsigned long id = REGION_ID(ea);
+ unsigned long id = get_region_id(ea);
/* IRQs are not reconciled here, so can't check irqs_disabled */
VM_WARN_ON(mfmsr() & MSR_EE);
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 7f12c7b78c0f..4770cce1bfe2 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -194,7 +194,7 @@ static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr)
* faults need to be deferred to process context.
*/
if ((dsisr & MFC_DSISR_PTE_NOT_FOUND) &&
- (REGION_ID(ea) != USER_REGION_ID)) {
+ (get_region_id(ea) != USER_REGION_ID)) {
spin_unlock(&spu->register_lock);
ret = hash_page(ea,
@@ -224,7 +224,7 @@ static void __spu_kernel_slb(void *addr, struct copro_slb *slb)
unsigned long ea = (unsigned long)addr;
u64 llp;
- if (REGION_ID(ea) == KERNEL_REGION_ID)
+ if (get_region_id(ea) == KERNEL_REGION_ID)
llp = mmu_psize_defs[mmu_linear_psize].sllp;
else
llp = mmu_psize_defs[mmu_virtual_psize].sllp;
diff --git a/drivers/misc/cxl/fault.c b/drivers/misc/cxl/fault.c
index dc7b34174f85..a4d17a5a9763 100644
--- a/drivers/misc/cxl/fault.c
+++ b/drivers/misc/cxl/fault.c
@@ -168,7 +168,7 @@ int cxl_handle_mm_fault(struct mm_struct *mm, u64 dsisr, u64 dar)
if (dsisr & CXL_PSL_DSISR_An_S)
access |= _PAGE_WRITE;
- if (!mm && (REGION_ID(dar) != USER_REGION_ID))
+ if (!mm && (get_region_id(dar) != USER_REGION_ID))
access |= _PAGE_PRIVILEGED;
if (dsisr & DSISR_NOHPTE)
diff --git a/drivers/misc/ocxl/link.c b/drivers/misc/ocxl/link.c
index d50b861d7e57..04ec3d74f828 100644
--- a/drivers/misc/ocxl/link.c
+++ b/drivers/misc/ocxl/link.c
@@ -163,7 +163,7 @@ static void xsl_fault_handler_bh(struct work_struct *fault_work)
if (fault->dsisr & SPA_XSL_S)
access |= _PAGE_WRITE;
- if (REGION_ID(fault->dar) != USER_REGION_ID)
+ if (get_region_id(fault->dar) != USER_REGION_ID)
access |= _PAGE_PRIVILEGED;
local_irq_save(flags);
--
2.20.1
^ permalink raw reply related
* [PATCH v4 3/8] powerpc/mm: Validate address values against different region limits
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
This adds an explicit check in various functions.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/mm/hash_utils_64.c | 18 +++++++++++++++---
arch/powerpc/mm/pgtable-hash64.c | 13 ++++++++++---
arch/powerpc/mm/pgtable-radix.c | 16 ++++++++++++++++
arch/powerpc/mm/pgtable_64.c | 5 +++++
4 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index c6b39e7694ba..ef0ca3bf555d 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -786,9 +786,16 @@ void resize_hpt_for_hotplug(unsigned long new_mem_size)
int hash__create_section_mapping(unsigned long start, unsigned long end, int nid)
{
- int rc = htab_bolt_mapping(start, end, __pa(start),
- pgprot_val(PAGE_KERNEL), mmu_linear_psize,
- mmu_kernel_ssize);
+ int rc;
+
+ if (end >= H_VMALLOC_START) {
+ pr_warn("Outisde the supported range\n");
+ return -1;
+ }
+
+ rc = htab_bolt_mapping(start, end, __pa(start),
+ pgprot_val(PAGE_KERNEL), mmu_linear_psize,
+ mmu_kernel_ssize);
if (rc < 0) {
int rc2 = htab_remove_mapping(start, end, mmu_linear_psize,
@@ -929,6 +936,11 @@ static void __init htab_initialize(void)
DBG("creating mapping for region: %lx..%lx (prot: %lx)\n",
base, size, prot);
+ if ((base + size) >= H_VMALLOC_START) {
+ pr_warn("Outisde the supported range\n");
+ continue;
+ }
+
BUG_ON(htab_bolt_mapping(base, base + size, __pa(base),
prot, mmu_linear_psize, mmu_kernel_ssize));
}
diff --git a/arch/powerpc/mm/pgtable-hash64.c b/arch/powerpc/mm/pgtable-hash64.c
index c08d49046a96..d934de4e2b3a 100644
--- a/arch/powerpc/mm/pgtable-hash64.c
+++ b/arch/powerpc/mm/pgtable-hash64.c
@@ -112,9 +112,16 @@ int __meminit hash__vmemmap_create_mapping(unsigned long start,
unsigned long page_size,
unsigned long phys)
{
- int rc = htab_bolt_mapping(start, start + page_size, phys,
- pgprot_val(PAGE_KERNEL),
- mmu_vmemmap_psize, mmu_kernel_ssize);
+ int rc;
+
+ if ((start + page_size) >= H_VMEMMAP_END) {
+ pr_warn("Outisde the supported range\n");
+ return -1;
+ }
+
+ rc = htab_bolt_mapping(start, start + page_size, phys,
+ pgprot_val(PAGE_KERNEL),
+ mmu_vmemmap_psize, mmu_kernel_ssize);
if (rc < 0) {
int rc2 = htab_remove_mapping(start, start + page_size,
mmu_vmemmap_psize,
diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
index 94b18996e1b0..263c3ff662c3 100644
--- a/arch/powerpc/mm/pgtable-radix.c
+++ b/arch/powerpc/mm/pgtable-radix.c
@@ -338,6 +338,12 @@ void __init radix_init_pgtable(void)
* page tables will be allocated within the range. No
* need or a node (which we don't have yet).
*/
+
+ if ((reg->base + reg->size) >= RADIX_VMALLOC_START) {
+ pr_warn("Outisde the supported range\n");
+ continue;
+ }
+
WARN_ON(create_physical_mapping(reg->base,
reg->base + reg->size,
-1));
@@ -870,6 +876,11 @@ static void __meminit remove_pagetable(unsigned long start, unsigned long end)
int __meminit radix__create_section_mapping(unsigned long start, unsigned long end, int nid)
{
+ if (end >= RADIX_VMALLOC_START) {
+ pr_warn("Outisde the supported range\n");
+ return -1;
+ }
+
return create_physical_mapping(start, end, nid);
}
@@ -897,6 +908,11 @@ int __meminit radix__vmemmap_create_mapping(unsigned long start,
int nid = early_pfn_to_nid(phys >> PAGE_SHIFT);
int ret;
+ if ((start + page_size) >= RADIX_VMEMMAP_END) {
+ pr_warn("Outisde the supported range\n");
+ return -1;
+ }
+
ret = __map_kernel_page_nid(start, phys, __pgprot(flags), page_size, nid);
BUG_ON(ret);
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index 56068cac2a3c..72f58c076e26 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -121,6 +121,11 @@ void __iomem *__ioremap_at(phys_addr_t pa, void *ea, unsigned long size, pgprot_
if (pgprot_val(prot) & H_PAGE_4K_PFN)
return NULL;
+ if ((ea + size) >= (void *)IOREMAP_END) {
+ pr_warn("Outisde the supported range\n");
+ return NULL;
+ }
+
WARN_ON(pa & ~PAGE_MASK);
WARN_ON(((unsigned long)ea) & ~PAGE_MASK);
WARN_ON(size & ~PAGE_MASK);
--
2.20.1
^ permalink raw reply related
* [PATCH v4 4/8] powerpc/mm: Drop the unnecessary region check
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
All the regions are now mapped with top nibble 0xc. Hence the region id
check is not needed for virt_addr_valid()
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/page.h | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index 918228f2205b..748f5db2e2b7 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -132,19 +132,7 @@ static inline bool pfn_valid(unsigned long pfn)
#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
-#ifdef CONFIG_PPC_BOOK3S_64
-/*
- * On hash the vmalloc and other regions alias to the kernel region when passed
- * through __pa(), which virt_to_pfn() uses. That means virt_addr_valid() can
- * return true for some vmalloc addresses, which is incorrect. So explicitly
- * check that the address is in the kernel region.
- */
-/* may be can drop get_region_id */
-#define virt_addr_valid(kaddr) (get_region_id((unsigned long)kaddr) == KERNEL_REGION_ID && \
- pfn_valid(virt_to_pfn(kaddr)))
-#else
#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr))
-#endif
/*
* On Book-E parts we need __va to parse the device tree and we can't
--
2.20.1
^ permalink raw reply related
* [PATCH v4 5/8] powerpc/mm/hash: Simplify the region id calculation.
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
This reduces multiple comparisons in get_region_id to a bit shift operation.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/hash-4k.h | 4 ++-
arch/powerpc/include/asm/book3s/64/hash-64k.h | 1 +
arch/powerpc/include/asm/book3s/64/hash.h | 31 +++++++++----------
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 2 +-
4 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h
index 0dd62287f56c..64eaf187f891 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h
@@ -13,12 +13,14 @@
*/
#define MAX_EA_BITS_PER_CONTEXT 46
+#define REGION_SHIFT (MAX_EA_BITS_PER_CONTEXT - 2)
+
/*
* Our page table limit us to 64TB. Hence for the kernel mapping,
* each MAP area is limited to 16 TB.
* The four map areas are: linear mapping, vmap, IO and vmemmap
*/
-#define H_KERN_MAP_SIZE (ASM_CONST(1) << (MAX_EA_BITS_PER_CONTEXT - 2))
+#define H_KERN_MAP_SIZE (ASM_CONST(1) << REGION_SHIFT)
/*
* Define the address range of the kernel non-linear virtual area
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h
index e392cf17b457..24ca63beba14 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h
@@ -12,6 +12,7 @@
* is handled in the hotpath.
*/
#define MAX_EA_BITS_PER_CONTEXT 49
+#define REGION_SHIFT MAX_EA_BITS_PER_CONTEXT
/*
* We use one context for each MAP area.
diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
index 76741a221910..7faa3d7214c0 100644
--- a/arch/powerpc/include/asm/book3s/64/hash.h
+++ b/arch/powerpc/include/asm/book3s/64/hash.h
@@ -83,26 +83,26 @@
#define H_VMEMMAP_SIZE H_KERN_MAP_SIZE
#define H_VMEMMAP_END (H_VMEMMAP_START + H_VMEMMAP_SIZE)
+#define NON_LINEAR_REGION_ID(ea) ((((unsigned long)ea - H_KERN_VIRT_START) >> REGION_SHIFT) + 2)
+
/*
* Region IDs
*/
-#define USER_REGION_ID 1
-#define KERNEL_REGION_ID 2
-#define VMALLOC_REGION_ID 3
-#define IO_REGION_ID 4
-#define VMEMMAP_REGION_ID 5
+#define USER_REGION_ID 0
+#define KERNEL_REGION_ID 1
+#define VMALLOC_REGION_ID NON_LINEAR_REGION_ID(H_VMALLOC_START)
+#define IO_REGION_ID NON_LINEAR_REGION_ID(H_KERN_IO_START)
+#define VMEMMAP_REGION_ID NON_LINEAR_REGION_ID(H_VMEMMAP_START)
/*
* Defines the address of the vmemap area, in its own region on
* hash table CPUs.
*/
-
#ifdef CONFIG_PPC_MM_SLICES
#define HAVE_ARCH_UNMAPPED_AREA
#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
#endif /* CONFIG_PPC_MM_SLICES */
-
/* PTEIDX nibble */
#define _PTEIDX_SECONDARY 0x8
#define _PTEIDX_GROUP_IX 0x7
@@ -113,22 +113,21 @@
#ifndef __ASSEMBLY__
static inline int get_region_id(unsigned long ea)
{
+ int region_id;
int id = (ea >> 60UL);
if (id == 0)
return USER_REGION_ID;
- VM_BUG_ON(id != 0xc);
- VM_BUG_ON(ea >= H_VMEMMAP_END);
+ if (ea < H_KERN_VIRT_START)
+ return KERNEL_REGION_ID;
- if (ea >= H_VMEMMAP_START)
- return VMEMMAP_REGION_ID;
- else if (ea >= H_KERN_IO_START)
- return IO_REGION_ID;
- else if (ea >= H_VMALLOC_START)
- return VMALLOC_REGION_ID;
+ VM_BUG_ON(id != 0xc);
+ BUILD_BUG_ON(NON_LINEAR_REGION_ID(H_VMALLOC_START) != 2);
- return KERNEL_REGION_ID;
+ region_id = NON_LINEAR_REGION_ID(ea);
+ VM_BUG_ON(region_id > VMEMMAP_REGION_ID);
+ return region_id;
}
#define hash__pmd_bad(pmd) (pmd_val(pmd) & H_PMD_BAD_BITS)
diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
index b3f256c042aa..b146448109fd 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
@@ -794,7 +794,7 @@ static inline unsigned long get_kernel_context(unsigned long ea)
*/
ctx = 1 + ((ea & EA_MASK) >> MAX_EA_BITS_PER_CONTEXT);
} else
- ctx = region_id + MAX_KERNEL_CTX_CNT - 2;
+ ctx = region_id + MAX_KERNEL_CTX_CNT - 1;
return ctx;
}
--
2.20.1
^ permalink raw reply related
* [PATCH v4 6/8] powerpc/mm: Print kernel map details to dmesg
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
This helps in debugging. We can look at the dmesg to find out
different kernel mapping details.
On 4K config this shows
kernel vmalloc start = 0xc000100000000000
kernel IO start = 0xc000200000000000
kernel vmemmap start = 0xc000300000000000
On 64K config:
kernel vmalloc start = 0xc008000000000000
kernel IO start = 0xc00a000000000000
kernel vmemmap start = 0xc00c000000000000
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/kernel/setup-common.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 2e5dfb6e0823..a7ab9638ebd9 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -831,6 +831,9 @@ static __init void print_system_info(void)
pr_info("htab_address = 0x%p\n", htab_address);
if (htab_hash_mask)
pr_info("htab_hash_mask = 0x%lx\n", htab_hash_mask);
+ pr_info("kernel vmalloc start = 0x%lx\n", KERN_VIRT_START);
+ pr_info("kernel IO start = 0x%lx\n", KERN_IO_START);
+ pr_info("kernel vmemmap start = 0x%lx\n", (unsigned long)vmemmap);
#endif
#ifdef CONFIG_PPC_BOOK3S_32
if (Hash)
--
2.20.1
^ permalink raw reply related
* [PATCH v4 7/8] powerpc/mm/hash: Rename KERNEL_REGION_ID to LINEAR_MAP_REGION_ID
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
The region actually point to linear map. Rename the #define to
clarify thati.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/hash.h | 4 ++--
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 2 +-
arch/powerpc/mm/copro_fault.c | 4 ++--
arch/powerpc/mm/slb.c | 4 ++--
arch/powerpc/platforms/cell/spu_base.c | 2 +-
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
index 7faa3d7214c0..1d1183048cfd 100644
--- a/arch/powerpc/include/asm/book3s/64/hash.h
+++ b/arch/powerpc/include/asm/book3s/64/hash.h
@@ -89,7 +89,7 @@
* Region IDs
*/
#define USER_REGION_ID 0
-#define KERNEL_REGION_ID 1
+#define LINEAR_MAP_REGION_ID 1
#define VMALLOC_REGION_ID NON_LINEAR_REGION_ID(H_VMALLOC_START)
#define IO_REGION_ID NON_LINEAR_REGION_ID(H_KERN_IO_START)
#define VMEMMAP_REGION_ID NON_LINEAR_REGION_ID(H_VMEMMAP_START)
@@ -120,7 +120,7 @@ static inline int get_region_id(unsigned long ea)
return USER_REGION_ID;
if (ea < H_KERN_VIRT_START)
- return KERNEL_REGION_ID;
+ return LINEAR_MAP_REGION_ID;
VM_BUG_ON(id != 0xc);
BUILD_BUG_ON(NON_LINEAR_REGION_ID(H_VMALLOC_START) != 2);
diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
index b146448109fd..5d2adf3c1325 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
@@ -788,7 +788,7 @@ static inline unsigned long get_kernel_context(unsigned long ea)
* Depending on Kernel config, kernel region can have one context
* or more.
*/
- if (region_id == KERNEL_REGION_ID) {
+ if (region_id == LINEAR_MAP_REGION_ID) {
/*
* We already verified ea to be not beyond the addr limit.
*/
diff --git a/arch/powerpc/mm/copro_fault.c b/arch/powerpc/mm/copro_fault.c
index 9b0321061bc8..f137286740cb 100644
--- a/arch/powerpc/mm/copro_fault.c
+++ b/arch/powerpc/mm/copro_fault.c
@@ -129,8 +129,8 @@ int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb)
vsid = get_kernel_vsid(ea, mmu_kernel_ssize);
vsidkey = SLB_VSID_KERNEL;
break;
- case KERNEL_REGION_ID:
- pr_devel("%s: 0x%llx -- KERNEL_REGION_ID\n", __func__, ea);
+ case LINEAR_MAP_REGION_ID:
+ pr_devel("%s: 0x%llx -- LINEAR_MAP_REGION_ID\n", __func__, ea);
psize = mmu_linear_psize;
ssize = mmu_kernel_ssize;
vsid = get_kernel_vsid(ea, mmu_kernel_ssize);
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c
index a0c37f428d60..2c4e01781c10 100644
--- a/arch/powerpc/mm/slb.c
+++ b/arch/powerpc/mm/slb.c
@@ -691,7 +691,7 @@ static long slb_allocate_kernel(unsigned long ea, unsigned long id)
unsigned long flags;
int ssize;
- if (id == KERNEL_REGION_ID) {
+ if (id == LINEAR_MAP_REGION_ID) {
/* We only support upto MAX_PHYSMEM_BITS */
if ((ea & EA_MASK) > (1UL << MAX_PHYSMEM_BITS))
@@ -790,7 +790,7 @@ long do_slb_fault(struct pt_regs *regs, unsigned long ea)
* first class kernel code. But for performance it's probably nicer
* if they go via fast_exception_return too.
*/
- if (id >= KERNEL_REGION_ID) {
+ if (id >= LINEAR_MAP_REGION_ID) {
long err;
#ifdef CONFIG_DEBUG_VM
/* Catch recursive kernel SLB faults. */
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 4770cce1bfe2..6646f152d57b 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -224,7 +224,7 @@ static void __spu_kernel_slb(void *addr, struct copro_slb *slb)
unsigned long ea = (unsigned long)addr;
u64 llp;
- if (get_region_id(ea) == KERNEL_REGION_ID)
+ if (get_region_id(ea) == LINEAR_MAP_REGION_ID)
llp = mmu_psize_defs[mmu_linear_psize].sllp;
else
llp = mmu_psize_defs[mmu_virtual_psize].sllp;
--
2.20.1
^ permalink raw reply related
* [PATCH v4 8/8] powerpc/mm/hash/4K: Update the vmalloc start for hash 4K config
From: Aneesh Kumar K.V @ 2019-04-17 12:59 UTC (permalink / raw)
To: npiggin, paulus, mpe; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417125920.785-1-aneesh.kumar@linux.ibm.com>
This updates hash 4k VMALLOC_START to 0xc008000000000000. Our page table
still limit max addr to 64TB. But with hash translation we map only
vmalloc and IO region and we ignore top bits (0xc008) when mapping the
addr to page table. That means VMALLOC_START get mapped as 0 addr on
linux page table.
With this we have for 4K
kernel vmalloc start = 0xc008000000000000
kernel IO start = 0xc008100000000000
kernel vmemmap start = 0xc008200000000000
64K hash, 64K radix and 4k radix:
kernel vmalloc start = 0xc008000000000000
kernel IO start = 0xc00a000000000000
kernel vmemmap start = 0xc00c000000000000
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/hash-4k.h | 8 +++++++-
arch/powerpc/include/asm/book3s/64/hash-64k.h | 2 +-
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 11 +++++------
arch/powerpc/include/asm/book3s/64/mmu.h | 9 ++++++++-
4 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h
index 64eaf187f891..73058c933560 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h
@@ -26,7 +26,13 @@
* Define the address range of the kernel non-linear virtual area
* 16TB
*/
-#define H_KERN_VIRT_START ASM_CONST(0xc000100000000000)
+#define H_KERN_VIRT_START ASM_CONST(0xc008000000000000)
+/*
+ * Even though we use 2PB address here, For mapping to linux
+ * page table we ignore these bits. Hash only map vmalloc
+ * and I/O region in linux page table.
+ */
+#define H_KERN_EA_MASK ASM_CONST(~0xc008000000000000)
#ifndef __ASSEMBLY__
#define H_PTE_TABLE_SIZE (sizeof(pte_t) << H_PTE_INDEX_SIZE)
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h
index 24ca63beba14..0d0ea957bdfd 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h
@@ -24,7 +24,7 @@
* 2PB
*/
#define H_KERN_VIRT_START ASM_CONST(0xc008000000000000)
-
+#define H_KERN_EA_MASK ASM_CONST(~0xc000000000000000)
/*
* 64k aligned address free up few of the lower bits of RPN for us
* We steal that here. For more deatils look at pte_pfn/pfn_pte()
diff --git a/arch/powerpc/include/asm/book3s/64/mmu-hash.h b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
index 5d2adf3c1325..8be2cbbf8ef2 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu-hash.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu-hash.h
@@ -742,12 +742,6 @@ static inline unsigned long get_vsid(unsigned long context, unsigned long ea,
unsigned long vsid_bits;
unsigned long protovsid;
- /*
- * Bad address. We return VSID 0 for that
- */
- if ((ea & EA_MASK) >= H_PGTABLE_RANGE)
- return 0;
-
if (!mmu_has_feature(MMU_FTR_68_BIT_VA))
va_bits = 65;
@@ -807,6 +801,11 @@ static inline unsigned long get_kernel_vsid(unsigned long ea, int ssize)
if (!is_kernel_addr(ea))
return 0;
+ /*
+ * Bad address. We return VSID 0 for that
+ */
+ if ((ea & H_KERN_EA_MASK) >= H_PGTABLE_RANGE)
+ return 0;
context = get_kernel_context(ea);
return get_vsid(context, ea, ssize);
diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index 1ceee000c18d..cab8deb2501e 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -232,8 +232,15 @@ static inline int get_user_context(mm_context_t *ctx, unsigned long ea)
static inline unsigned long get_user_vsid(mm_context_t *ctx,
unsigned long ea, int ssize)
{
- unsigned long context = get_user_context(ctx, ea);
+ unsigned long context;
+ /*
+ * Bad address. We return VSID 0 for that
+ */
+ if (ea >= H_PGTABLE_RANGE)
+ return 0;
+
+ context = get_user_context(ctx, ea);
return get_vsid(context, ea, ssize);
}
--
2.20.1
^ permalink raw reply related
* [PATCH v3 0/6] Reduce memory usage for mm_context_t
From: Aneesh Kumar K.V @ 2019-04-17 13:03 UTC (permalink / raw)
To: npiggin, paulus, mpe, Christophe Leroy; +Cc: Aneesh Kumar K.V, linuxppc-dev
This patch moves hash translation related context variables to another structure
and runtime allocate that based on translation mode.
Aneesh Kumar K.V (6):
powerpc/mm/radix: Do slb preload only with hash translation mode
powerpc/mm: Remove PPC_MM_SLICES #ifdef for book3s64
powerpc/mm: Add helpers for accessing hash translation related
variables
powerpc/mm: Move slb_addr_linit to early_init_mmu
powerpc/mm: Reduce memory usage for mm_context_t for radix
powerc/mm/hash: Reduce hash_mm_context size
arch/powerpc/include/asm/book3s/64/mmu-hash.h | 37 +++++++-
arch/powerpc/include/asm/book3s/64/mmu.h | 92 +++++++++++++------
arch/powerpc/include/asm/book3s/64/slice.h | 13 ---
arch/powerpc/include/asm/nohash/32/mmu-8xx.h | 50 ++++++++++
arch/powerpc/kernel/paca.c | 12 +--
arch/powerpc/kernel/process.c | 3 +-
arch/powerpc/kernel/setup-common.c | 7 +-
arch/powerpc/mm/hash_utils_64.c | 17 +++-
arch/powerpc/mm/mmu_context_book3s64.c | 29 +++++-
arch/powerpc/mm/slb.c | 2 +-
arch/powerpc/mm/slice.c | 49 +++++-----
arch/powerpc/mm/subpage-prot.c | 34 +++++--
arch/powerpc/mm/tlb_nohash.c | 6 ++
13 files changed, 248 insertions(+), 103 deletions(-)
--
2.20.1
^ permalink raw reply
* [PATCH v3 2/6] powerpc/mm: Remove PPC_MM_SLICES #ifdef for book3s64
From: Aneesh Kumar K.V @ 2019-04-17 13:03 UTC (permalink / raw)
To: npiggin, paulus, mpe, Christophe Leroy; +Cc: Aneesh Kumar K.V, linuxppc-dev
In-Reply-To: <20190417130351.3805-1-aneesh.kumar@linux.ibm.com>
Book3s64 always have PPC_MM_SLICES enabled. So remove the unncessary #ifdef
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
---
arch/powerpc/include/asm/book3s/64/mmu.h | 4 ----
arch/powerpc/include/asm/book3s/64/slice.h | 13 -------------
2 files changed, 17 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index 1ceee000c18d..484a8ff9b338 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -123,7 +123,6 @@ typedef struct {
/* NPU NMMU context */
struct npu_context *npu_context;
-#ifdef CONFIG_PPC_MM_SLICES
/* SLB page size encodings*/
unsigned char low_slices_psize[BITS_PER_LONG / BITS_PER_BYTE];
unsigned char high_slices_psize[SLICE_ARRAY_SIZE];
@@ -136,9 +135,6 @@ typedef struct {
struct slice_mask mask_16m;
struct slice_mask mask_16g;
# endif
-#else
- u16 sllp; /* SLB page size encoding */
-#endif
unsigned long vdso_base;
#ifdef CONFIG_PPC_SUBPAGE_PROT
struct subpage_prot_table spt;
diff --git a/arch/powerpc/include/asm/book3s/64/slice.h b/arch/powerpc/include/asm/book3s/64/slice.h
index db0dedab65ee..062e11136e9c 100644
--- a/arch/powerpc/include/asm/book3s/64/slice.h
+++ b/arch/powerpc/include/asm/book3s/64/slice.h
@@ -2,8 +2,6 @@
#ifndef _ASM_POWERPC_BOOK3S_64_SLICE_H
#define _ASM_POWERPC_BOOK3S_64_SLICE_H
-#ifdef CONFIG_PPC_MM_SLICES
-
#define SLICE_LOW_SHIFT 28
#define SLICE_LOW_TOP (0x100000000ul)
#define SLICE_NUM_LOW (SLICE_LOW_TOP >> SLICE_LOW_SHIFT)
@@ -13,15 +11,4 @@
#define SLICE_NUM_HIGH (H_PGTABLE_RANGE >> SLICE_HIGH_SHIFT)
#define GET_HIGH_SLICE_INDEX(addr) ((addr) >> SLICE_HIGH_SHIFT)
-#else /* CONFIG_PPC_MM_SLICES */
-
-#define get_slice_psize(mm, addr) ((mm)->context.user_psize)
-#define slice_set_user_psize(mm, psize) \
-do { \
- (mm)->context.user_psize = (psize); \
- (mm)->context.sllp = SLB_VSID_USER | mmu_psize_defs[(psize)].sllp; \
-} while (0)
-
-#endif /* CONFIG_PPC_MM_SLICES */
-
#endif /* _ASM_POWERPC_BOOK3S_64_SLICE_H */
--
2.20.1
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox