[PATCH v6 0/4] ppc: Enable full Xen build

Shawn Anastasio posted 4 patches 8 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/cover.1694717278.git.sanastasio@raptorengineering.com
xen/arch/ppc/Kconfig                     |   1 +
xen/arch/ppc/Makefile                    |  17 +-
xen/arch/ppc/arch.mk                     |   3 -
xen/arch/ppc/include/asm/Makefile        |   2 +
xen/arch/ppc/include/asm/altp2m.h        |  25 ++
xen/arch/ppc/include/asm/bitops.h        | 332 +++++++++++++++++++++-
xen/arch/ppc/include/asm/bug.h           |   9 +
xen/arch/ppc/include/asm/cache.h         |   2 +
xen/arch/ppc/include/asm/config.h        |  10 +
xen/arch/ppc/include/asm/cpufeature.h    |  10 +
xen/arch/ppc/include/asm/current.h       |  43 +++
xen/arch/ppc/include/asm/delay.h         |  12 +
xen/arch/ppc/include/asm/device.h        |  53 ++++
xen/arch/ppc/include/asm/div64.h         |  14 +
xen/arch/ppc/include/asm/domain.h        |  47 ++++
xen/arch/ppc/include/asm/event.h         |  36 +++
xen/arch/ppc/include/asm/flushtlb.h      |  24 ++
xen/arch/ppc/include/asm/grant_table.h   |   5 +
xen/arch/ppc/include/asm/guest_access.h  |  68 +++++
xen/arch/ppc/include/asm/guest_atomics.h |  23 ++
xen/arch/ppc/include/asm/hardirq.h       |  19 ++
xen/arch/ppc/include/asm/hypercall.h     |   5 +
xen/arch/ppc/include/asm/io.h            |  16 ++
xen/arch/ppc/include/asm/iocap.h         |   8 +
xen/arch/ppc/include/asm/iommu.h         |   8 +
xen/arch/ppc/include/asm/irq.h           |  33 +++
xen/arch/ppc/include/asm/mem_access.h    |   5 +
xen/arch/ppc/include/asm/mm.h            | 243 +++++++++++++++-
xen/arch/ppc/include/asm/monitor.h       |  43 +++
xen/arch/ppc/include/asm/nospec.h        |  15 +
xen/arch/ppc/include/asm/numa.h          |  26 ++
xen/arch/ppc/include/asm/p2m.h           |  95 +++++++
xen/arch/ppc/include/asm/page.h          |  18 ++
xen/arch/ppc/include/asm/paging.h        |   7 +
xen/arch/ppc/include/asm/pci.h           |   7 +
xen/arch/ppc/include/asm/percpu.h        |  24 ++
xen/arch/ppc/include/asm/processor.h     |  10 +
xen/arch/ppc/include/asm/random.h        |   9 +
xen/arch/ppc/include/asm/setup.h         |   6 +
xen/arch/ppc/include/asm/smp.h           |  18 ++
xen/arch/ppc/include/asm/softirq.h       |   8 +
xen/arch/ppc/include/asm/spinlock.h      |  15 +
xen/arch/ppc/include/asm/system.h        | 219 ++++++++++++++-
xen/arch/ppc/include/asm/time.h          |  23 ++
xen/arch/ppc/include/asm/xenoprof.h      |   0
xen/arch/ppc/mm-radix.c                  |  44 ++-
xen/arch/ppc/setup.c                     |   8 +
xen/arch/ppc/stubs.c                     | 339 +++++++++++++++++++++++
xen/arch/ppc/tlb-radix.c                 |   2 +-
xen/include/public/hvm/save.h            |   2 +
xen/include/public/pmu.h                 |   2 +
xen/include/public/xen.h                 |   2 +
52 files changed, 2004 insertions(+), 11 deletions(-)
create mode 100644 xen/arch/ppc/include/asm/Makefile
create mode 100644 xen/arch/ppc/include/asm/altp2m.h
create mode 100644 xen/arch/ppc/include/asm/cpufeature.h
create mode 100644 xen/arch/ppc/include/asm/current.h
create mode 100644 xen/arch/ppc/include/asm/delay.h
create mode 100644 xen/arch/ppc/include/asm/device.h
create mode 100644 xen/arch/ppc/include/asm/div64.h
create mode 100644 xen/arch/ppc/include/asm/domain.h
create mode 100644 xen/arch/ppc/include/asm/event.h
create mode 100644 xen/arch/ppc/include/asm/flushtlb.h
create mode 100644 xen/arch/ppc/include/asm/grant_table.h
create mode 100644 xen/arch/ppc/include/asm/guest_access.h
create mode 100644 xen/arch/ppc/include/asm/guest_atomics.h
create mode 100644 xen/arch/ppc/include/asm/hardirq.h
create mode 100644 xen/arch/ppc/include/asm/hypercall.h
create mode 100644 xen/arch/ppc/include/asm/io.h
create mode 100644 xen/arch/ppc/include/asm/iocap.h
create mode 100644 xen/arch/ppc/include/asm/iommu.h
create mode 100644 xen/arch/ppc/include/asm/irq.h
create mode 100644 xen/arch/ppc/include/asm/mem_access.h
create mode 100644 xen/arch/ppc/include/asm/monitor.h
create mode 100644 xen/arch/ppc/include/asm/nospec.h
create mode 100644 xen/arch/ppc/include/asm/numa.h
create mode 100644 xen/arch/ppc/include/asm/p2m.h
create mode 100644 xen/arch/ppc/include/asm/paging.h
create mode 100644 xen/arch/ppc/include/asm/pci.h
create mode 100644 xen/arch/ppc/include/asm/percpu.h
create mode 100644 xen/arch/ppc/include/asm/random.h
create mode 100644 xen/arch/ppc/include/asm/setup.h
create mode 100644 xen/arch/ppc/include/asm/smp.h
create mode 100644 xen/arch/ppc/include/asm/softirq.h
create mode 100644 xen/arch/ppc/include/asm/spinlock.h
create mode 100644 xen/arch/ppc/include/asm/time.h
create mode 100644 xen/arch/ppc/include/asm/xenoprof.h
create mode 100644 xen/arch/ppc/stubs.c
[PATCH v6 0/4] ppc: Enable full Xen build
Posted by Shawn Anastasio 8 months, 1 week ago
Hello all,

This patch series performs all of the additions necessary to drop the
build overrides for PPC and enable the full Xen build. Except in cases
where compatibile implementations already exist (e.g. bitops.h), the
newly added definitions are simple, unimplemented stubs that just call
BUG_ON("unimplemented").

Thanks,
Shawn

Shawn Anastasio (4):
  xen/ppc: Implement bitops.h
  xen/ppc: Define minimal stub headers required for full build
  xen/ppc: Add stub function and symbol definitions
  xen/ppc: Enable full Xen build

 xen/arch/ppc/Kconfig                     |   1 +
 xen/arch/ppc/Makefile                    |  17 +-
 xen/arch/ppc/arch.mk                     |   3 -
 xen/arch/ppc/include/asm/Makefile        |   2 +
 xen/arch/ppc/include/asm/altp2m.h        |  25 ++
 xen/arch/ppc/include/asm/bitops.h        | 332 +++++++++++++++++++++-
 xen/arch/ppc/include/asm/bug.h           |   9 +
 xen/arch/ppc/include/asm/cache.h         |   2 +
 xen/arch/ppc/include/asm/config.h        |  10 +
 xen/arch/ppc/include/asm/cpufeature.h    |  10 +
 xen/arch/ppc/include/asm/current.h       |  43 +++
 xen/arch/ppc/include/asm/delay.h         |  12 +
 xen/arch/ppc/include/asm/device.h        |  53 ++++
 xen/arch/ppc/include/asm/div64.h         |  14 +
 xen/arch/ppc/include/asm/domain.h        |  47 ++++
 xen/arch/ppc/include/asm/event.h         |  36 +++
 xen/arch/ppc/include/asm/flushtlb.h      |  24 ++
 xen/arch/ppc/include/asm/grant_table.h   |   5 +
 xen/arch/ppc/include/asm/guest_access.h  |  68 +++++
 xen/arch/ppc/include/asm/guest_atomics.h |  23 ++
 xen/arch/ppc/include/asm/hardirq.h       |  19 ++
 xen/arch/ppc/include/asm/hypercall.h     |   5 +
 xen/arch/ppc/include/asm/io.h            |  16 ++
 xen/arch/ppc/include/asm/iocap.h         |   8 +
 xen/arch/ppc/include/asm/iommu.h         |   8 +
 xen/arch/ppc/include/asm/irq.h           |  33 +++
 xen/arch/ppc/include/asm/mem_access.h    |   5 +
 xen/arch/ppc/include/asm/mm.h            | 243 +++++++++++++++-
 xen/arch/ppc/include/asm/monitor.h       |  43 +++
 xen/arch/ppc/include/asm/nospec.h        |  15 +
 xen/arch/ppc/include/asm/numa.h          |  26 ++
 xen/arch/ppc/include/asm/p2m.h           |  95 +++++++
 xen/arch/ppc/include/asm/page.h          |  18 ++
 xen/arch/ppc/include/asm/paging.h        |   7 +
 xen/arch/ppc/include/asm/pci.h           |   7 +
 xen/arch/ppc/include/asm/percpu.h        |  24 ++
 xen/arch/ppc/include/asm/processor.h     |  10 +
 xen/arch/ppc/include/asm/random.h        |   9 +
 xen/arch/ppc/include/asm/setup.h         |   6 +
 xen/arch/ppc/include/asm/smp.h           |  18 ++
 xen/arch/ppc/include/asm/softirq.h       |   8 +
 xen/arch/ppc/include/asm/spinlock.h      |  15 +
 xen/arch/ppc/include/asm/system.h        | 219 ++++++++++++++-
 xen/arch/ppc/include/asm/time.h          |  23 ++
 xen/arch/ppc/include/asm/xenoprof.h      |   0
 xen/arch/ppc/mm-radix.c                  |  44 ++-
 xen/arch/ppc/setup.c                     |   8 +
 xen/arch/ppc/stubs.c                     | 339 +++++++++++++++++++++++
 xen/arch/ppc/tlb-radix.c                 |   2 +-
 xen/include/public/hvm/save.h            |   2 +
 xen/include/public/pmu.h                 |   2 +
 xen/include/public/xen.h                 |   2 +
 52 files changed, 2004 insertions(+), 11 deletions(-)
 create mode 100644 xen/arch/ppc/include/asm/Makefile
 create mode 100644 xen/arch/ppc/include/asm/altp2m.h
 create mode 100644 xen/arch/ppc/include/asm/cpufeature.h
 create mode 100644 xen/arch/ppc/include/asm/current.h
 create mode 100644 xen/arch/ppc/include/asm/delay.h
 create mode 100644 xen/arch/ppc/include/asm/device.h
 create mode 100644 xen/arch/ppc/include/asm/div64.h
 create mode 100644 xen/arch/ppc/include/asm/domain.h
 create mode 100644 xen/arch/ppc/include/asm/event.h
 create mode 100644 xen/arch/ppc/include/asm/flushtlb.h
 create mode 100644 xen/arch/ppc/include/asm/grant_table.h
 create mode 100644 xen/arch/ppc/include/asm/guest_access.h
 create mode 100644 xen/arch/ppc/include/asm/guest_atomics.h
 create mode 100644 xen/arch/ppc/include/asm/hardirq.h
 create mode 100644 xen/arch/ppc/include/asm/hypercall.h
 create mode 100644 xen/arch/ppc/include/asm/io.h
 create mode 100644 xen/arch/ppc/include/asm/iocap.h
 create mode 100644 xen/arch/ppc/include/asm/iommu.h
 create mode 100644 xen/arch/ppc/include/asm/irq.h
 create mode 100644 xen/arch/ppc/include/asm/mem_access.h
 create mode 100644 xen/arch/ppc/include/asm/monitor.h
 create mode 100644 xen/arch/ppc/include/asm/nospec.h
 create mode 100644 xen/arch/ppc/include/asm/numa.h
 create mode 100644 xen/arch/ppc/include/asm/p2m.h
 create mode 100644 xen/arch/ppc/include/asm/paging.h
 create mode 100644 xen/arch/ppc/include/asm/pci.h
 create mode 100644 xen/arch/ppc/include/asm/percpu.h
 create mode 100644 xen/arch/ppc/include/asm/random.h
 create mode 100644 xen/arch/ppc/include/asm/setup.h
 create mode 100644 xen/arch/ppc/include/asm/smp.h
 create mode 100644 xen/arch/ppc/include/asm/softirq.h
 create mode 100644 xen/arch/ppc/include/asm/spinlock.h
 create mode 100644 xen/arch/ppc/include/asm/time.h
 create mode 100644 xen/arch/ppc/include/asm/xenoprof.h
 create mode 100644 xen/arch/ppc/stubs.c

--
2.30.2
Re: [PATCH v6 0/4] ppc: Enable full Xen build
Posted by Jan Beulich 8 months, 1 week ago
On 14.09.2023 21:03, Shawn Anastasio wrote:
> Shawn Anastasio (4):
>   xen/ppc: Implement bitops.h
>   xen/ppc: Define minimal stub headers required for full build

Compilation fails after applying this.

>   xen/ppc: Add stub function and symbol definitions

Continuing nevertheless, linking fails after this.

>   xen/ppc: Enable full Xen build

Things build okay for me when the full series is applied. Generally we
wouldn't deliberately break the build between any two patches; doing so
may be okay here (except I guest CI's build-each-commit would be upset),
but I'll do so only upon explicit request (and with no-one else objecting).

Jan
Re: [PATCH v6 0/4] ppc: Enable full Xen build
Posted by Shawn Anastasio 8 months, 1 week ago
On 9/18/23 8:19 AM, Jan Beulich wrote:
> On 14.09.2023 21:03, Shawn Anastasio wrote:
>> Shawn Anastasio (4):
>>   xen/ppc: Implement bitops.h
>>   xen/ppc: Define minimal stub headers required for full build
> 
> Compilation fails after applying this.
> 
>>   xen/ppc: Add stub function and symbol definitions
> 
> Continuing nevertheless, linking fails after this.
> 
>>   xen/ppc: Enable full Xen build
> 
> Things build okay for me when the full series is applied. Generally we
> wouldn't deliberately break the build between any two patches; doing so
> may be okay here (except I guest CI's build-each-commit would be upset),
> but I'll do so only upon explicit request (and with no-one else objecting).
>

Sorry about that. Going forward I'll take more care to ensure that
partially-applied series still build correctly. For this series though,
if you could make an exception it would be appreciated.

> Jan

Thanks,
Shawn
Re: [PATCH v6 0/4] ppc: Enable full Xen build
Posted by George Dunlap 8 months ago
On Mon, Sep 18, 2023 at 6:27 PM Shawn Anastasio
<sanastasio@raptorengineering.com> wrote:
>
> On 9/18/23 8:19 AM, Jan Beulich wrote:
> > On 14.09.2023 21:03, Shawn Anastasio wrote:
> >> Shawn Anastasio (4):
> >>   xen/ppc: Implement bitops.h
> >>   xen/ppc: Define minimal stub headers required for full build
> >
> > Compilation fails after applying this.
> >
> >>   xen/ppc: Add stub function and symbol definitions
> >
> > Continuing nevertheless, linking fails after this.
> >
> >>   xen/ppc: Enable full Xen build
> >
> > Things build okay for me when the full series is applied. Generally we
> > wouldn't deliberately break the build between any two patches; doing so
> > may be okay here (except I guest CI's build-each-commit would be upset),
> > but I'll do so only upon explicit request (and with no-one else objecting).
> >
>
> Sorry about that. Going forward I'll take more care to ensure that
> partially-applied series still build correctly. For this series though,
> if you could make an exception it would be appreciated.

What would be the reason for the exception?

We don't want to follow the rules just for the rules' sake, but the
rule is there for a reason: primarily to keep bisection working.  Not
sure of osstest is testing the PPC build yet, but if it were, then
this sort of thing would make it more difficult for the automatic
bisector to find regressions in other parts of the code.  Having
non-building patches can also confuse "archaeologists" -- people a few
years hence who are trying to understand what the code does.

Is there a reason that this series would be particularly difficult to
reorganize in a way that would keep it building?  (Haven't looked at
it in detail.)

 -George
Re: [PATCH v6 0/4] ppc: Enable full Xen build
Posted by George Dunlap 8 months ago
On Wed, Sep 20, 2023 at 11:59 AM George Dunlap <george.dunlap@cloud.com> wrote:
>
> On Mon, Sep 18, 2023 at 6:27 PM Shawn Anastasio
> <sanastasio@raptorengineering.com> wrote:
> >
> > On 9/18/23 8:19 AM, Jan Beulich wrote:
> > > On 14.09.2023 21:03, Shawn Anastasio wrote:
> > >> Shawn Anastasio (4):
> > >>   xen/ppc: Implement bitops.h
> > >>   xen/ppc: Define minimal stub headers required for full build
> > >
> > > Compilation fails after applying this.
> > >
> > >>   xen/ppc: Add stub function and symbol definitions
> > >
> > > Continuing nevertheless, linking fails after this.
> > >
> > >>   xen/ppc: Enable full Xen build
> > >
> > > Things build okay for me when the full series is applied. Generally we
> > > wouldn't deliberately break the build between any two patches; doing so
> > > may be okay here (except I guest CI's build-each-commit would be upset),
> > > but I'll do so only upon explicit request (and with no-one else objecting).
> > >
> >
> > Sorry about that. Going forward I'll take more care to ensure that
> > partially-applied series still build correctly. For this series though,
> > if you could make an exception it would be appreciated.
>
> What would be the reason for the exception?
>
> We don't want to follow the rules just for the rules' sake, but the
> rule is there for a reason: primarily to keep bisection working.  Not
> sure of osstest is testing the PPC build yet, but if it were, then
> this sort of thing would make it more difficult for the automatic
> bisector to find regressions in other parts of the code.  Having
> non-building patches can also confuse "archaeologists" -- people a few
> years hence who are trying to understand what the code does.
>
> Is there a reason that this series would be particularly difficult to
> reorganize in a way that would keep it building?  (Haven't looked at
> it in detail.)

Sorry, didn't notice that Jan had said it "might be okay here".  Jan,
don't count this as an objection.

 -George
Re: [PATCH v6 0/4] ppc: Enable full Xen build
Posted by Jan Beulich 8 months ago
On 20.09.2023 13:04, George Dunlap wrote:
> On Wed, Sep 20, 2023 at 11:59 AM George Dunlap <george.dunlap@cloud.com> wrote:
>>
>> On Mon, Sep 18, 2023 at 6:27 PM Shawn Anastasio
>> <sanastasio@raptorengineering.com> wrote:
>>>
>>> On 9/18/23 8:19 AM, Jan Beulich wrote:
>>>> On 14.09.2023 21:03, Shawn Anastasio wrote:
>>>>> Shawn Anastasio (4):
>>>>>   xen/ppc: Implement bitops.h
>>>>>   xen/ppc: Define minimal stub headers required for full build
>>>>
>>>> Compilation fails after applying this.
>>>>
>>>>>   xen/ppc: Add stub function and symbol definitions
>>>>
>>>> Continuing nevertheless, linking fails after this.
>>>>
>>>>>   xen/ppc: Enable full Xen build
>>>>
>>>> Things build okay for me when the full series is applied. Generally we
>>>> wouldn't deliberately break the build between any two patches; doing so
>>>> may be okay here (except I guest CI's build-each-commit would be upset),
>>>> but I'll do so only upon explicit request (and with no-one else objecting).
>>>>
>>>
>>> Sorry about that. Going forward I'll take more care to ensure that
>>> partially-applied series still build correctly. For this series though,
>>> if you could make an exception it would be appreciated.
>>
>> What would be the reason for the exception?
>>
>> We don't want to follow the rules just for the rules' sake, but the
>> rule is there for a reason: primarily to keep bisection working.  Not
>> sure of osstest is testing the PPC build yet, but if it were, then
>> this sort of thing would make it more difficult for the automatic
>> bisector to find regressions in other parts of the code.  Having
>> non-building patches can also confuse "archaeologists" -- people a few
>> years hence who are trying to understand what the code does.
>>
>> Is there a reason that this series would be particularly difficult to
>> reorganize in a way that would keep it building?  (Haven't looked at
>> it in detail.)
> 
> Sorry, didn't notice that Jan had said it "might be okay here".  Jan,
> don't count this as an objection.

Just to mention it (besides the fact that I did the commits already
before your reply) - at this stage I'm not sure bisection of PPC alone
is particularly important, yet. Hence why I said "might be okay".

Jan