From: msalter@redhat.com (Mark Salter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI hostbridge init based on ACPI
Date: Thu, 14 Jan 2016 13:44:52 -0500 [thread overview]
Message-ID: <1452797092.28109.42.camel@redhat.com> (raw)
In-Reply-To: <20160114175924.GC20706@red-moon>
On Thu, 2016-01-14 at 17:59 +0000, Lorenzo Pieralisi wrote:
> On Thu, Jan 14, 2016 at 12:32:03PM -0500, Mark Salter wrote:
> > On Thu, 2016-01-14 at 17:07 +0000, Lorenzo Pieralisi wrote:
> > > On Thu, Jan 14, 2016 at 11:38:44AM -0500, Mark Salter wrote:
> > >
> > > [...]
> > >
> > > > You would lose that bet. AddressMinimum/Maximum describe the
> > > > PCI bus addresses.
> > >
> > > In the mainline DT (APM Mustang), the CPU physical address corresponding
> > > to IO space is 0xe010000000, PCI bus address is 0x0.
> > >
> > > > ? ? ? ? ? ? ? ? QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
> > > > ????????????????????0x0000000000000000, // Granularity
> > > > ????????????????????0x0000000010000000, // Range Minimum
> > >
> > >
> > > > ????????????????????0x000000001000FFFF, // Range Maximum
> > > > ????????????????????0x000000E000000000, // Translation Offset
> > >
> > > See above, I will get the APM specifications to countercheck.
> >
> > The spec won't help other than to verify that the PCIe bridge supports
> > a 32-bit IO address space. The firmware sets the PCI bus base @
> > 0x10000000 with a CPU base address for that window @ 0xe010000000. The
> > pci-xgene.c driver sets the PCI bus IO base address to whatever DT
> > tells it too. For ACPI, we have to use whatever the firmware set it to
> > and described it in the ACPI table.
>
> It makes sense, thank you for clarifying (and sorry for jumping
> to conclusions, I am a bit worried about the ACPI IO space descriptors
> specification and usage on arm64).
>
> > When I looked at this a while back, neither ACPI nor PCI had anything
> > which disallowed 32-bit IO space on the PCI bus. The 16-bit limit is
> > an x86 limit in the instruction set.
>
> We should ask Jiang to remove that check or to make it x86 only (does
> current mainline - where the offset is added to the resource start/end -
> work on ia64 ?)
I think current mainline ia64 would work only for IO spaces which don't
exceed 64KiB in size. Otherwise it would trip on the same check disabling
Mustang IO space. ia64-specific code supports multiple IO spaces but they
all are expected to start at PCI bus address zero. At least my reading of
that code leads me to believe it is broken otherwise. In any case, those
IO spaces on the PCI bus could exceed 64K in size and any of those which do
would get caught by the 64K check in generic code and disabled.
>
> Thanks,
> Lorenzo
>
> >
> > >
> > > I agree with you we have to verify if this IO space limitation is
> > > real or it is just an x86ism, in which case we remove that check.
> > >
> > > Lorenzo
> > > > ????????????????????0x0000000000010000, // Length
> > > > ????????????????????,, , TypeStatic)
> > >
> > > >
> > > >
> > > > > Jiang's patch:
> > > > >
> > > > > https://lkml.org/lkml/2015/12/16/249
> > > > >
> > > > > parses the IO descriptors and stores the AddressMinimum, AddressMaximum
> > > > > in the IO resource (with AddressTranslation as offset which must be the
> > > > > *CPU* physical address mapping IO), from the log above it seems to me in
> > > > > AddressMinimum APM specifies the *CPU* physical address generating IO
> > > > > cycles.
> > > > >
> > > > > All in all, I was right to fear this would happen, and I already
> > > > > raised the point within the ACPI spec working group, ACPI IO
> > > > > descriptors specification is ambiguous and we must agree on how
> > > > > they have to be specified once for all.
> > > > >
> > > > > Lorenzo
> > > >
> >
next prev parent reply other threads:[~2016-01-14 18:44 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-13 13:20 [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI hostbridge init based on ACPI Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 01/21] x86, pci: Reorder logic of pci_mmconfig_insert() function Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 02/21] x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code out of arch/x86/ directory Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 03/21] pci, acpi, mcfg: Provide generic implementation of MCFG code initialization Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 04/21] x86, pci: mmconfig_{32, 64}.c code refactoring - remove code duplication Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 05/21] x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM driver Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 06/21] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 07/21] pci, acpi, mcfg: Provide default RAW ACPI PCI config space accessors Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 08/21] arm64, acpi: Use empty PCI config space accessors from mcfg.c file Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 09/21] pci, acpi, ecam: Add flag to indicate whether ECAM region was hot added or not Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 10/21] x86, pci: Cleanup platform specific MCFG data using previously added ECAM hot_added flag Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 11/21] pci, acpi: Move ACPI host bridge device companion assignment to core code Tomasz Nowicki
2016-01-19 16:02 ` Lorenzo Pieralisi
2016-01-20 11:20 ` Tomasz Nowicki
2016-01-20 12:38 ` Lorenzo Pieralisi
2016-01-20 13:40 ` Tomasz Nowicki
2016-01-20 14:22 ` Lorenzo Pieralisi
2016-01-20 14:41 ` Tomasz Nowicki
2016-01-27 17:42 ` Lorenzo Pieralisi
2016-01-13 13:20 ` [PATCH V3 12/21] x86, ia64, pci: Remove ACPI companion device from platform specific data Tomasz Nowicki
2016-01-13 13:20 ` [PATCH V3 13/21] pci, acpi: Provide generic way to assign bus domain number Tomasz Nowicki
2016-01-21 18:22 ` Lorenzo Pieralisi
2016-01-21 18:38 ` Tomasz Nowicki
2016-01-22 11:25 ` Lorenzo Pieralisi
2016-01-13 13:21 ` [PATCH V3 14/21] x86, ia64: Include acpi_pci_{add|remove}_bus to the default pcibios_{add|remove}_bus implementation Tomasz Nowicki
2016-01-14 16:33 ` Lorenzo Pieralisi
2016-01-14 17:45 ` Tomasz Nowicki
2016-01-13 13:21 ` [PATCH V3 15/21] acpi, mcfg: Implement two calls that might be used to inject/remove MCFG region Tomasz Nowicki
2016-01-13 13:21 ` [PATCH V3 16/21] x86, acpi, pci: Use equivalent function introduced in previous patch Tomasz Nowicki
2016-01-13 13:21 ` [PATCH V3 17/21] acpi, mcfg: Add default PCI config accessors implementation and initial support for related quirks Tomasz Nowicki
2016-01-13 13:21 ` [PATCH V3 18/21] ACPI, PCI: Refine the way to handle translation_offset for ACPI resources Tomasz Nowicki
2016-01-14 12:13 ` Lorenzo Pieralisi
2016-01-19 12:20 ` Lorenzo Pieralisi
2016-01-25 9:52 ` Lorenzo Pieralisi
2016-01-25 16:57 ` Mark Salter
2016-01-28 10:23 ` Hanjun Guo
2016-01-13 13:21 ` [PATCH V3 19/21] pci, acpi: Support for ACPI based generic PCI host controller init Tomasz Nowicki
2016-01-15 9:57 ` Hanjun Guo
2016-01-18 9:57 ` Tomasz Nowicki
2016-01-18 9:25 ` liudongdong (C)
2016-01-18 10:34 ` Tomasz Nowicki
2016-01-19 11:58 ` Lorenzo Pieralisi
2016-01-20 15:01 ` Tomasz Nowicki
2016-01-13 13:21 ` [PATCH V3 20/21] pci, acpi: Match PCI config space accessors against platfrom specific quirks Tomasz Nowicki
2016-01-14 15:36 ` Mark Salter
2016-01-18 12:41 ` Tomasz Nowicki
2016-01-19 1:49 ` liudongdong (C)
2016-01-19 7:55 ` Tomasz Nowicki
2016-01-19 8:52 ` liudongdong (C)
2016-01-13 13:21 ` [PATCH V3 21/21] arm64, pci, acpi: Start using ACPI based PCI host bridge driver for ARM64 Tomasz Nowicki
2016-01-13 15:24 ` [PATCH V3 00/21] MMCONFIG refactoring and support for ARM64 PCI hostbridge init based on ACPI Sinan Kaya
2016-01-13 15:27 ` Tomasz Nowicki
2016-01-14 13:44 ` Graeme Gregory
2016-01-14 14:00 ` Catalin Marinas
2016-01-14 14:09 ` Mark Salter
2016-01-14 14:50 ` Catalin Marinas
2016-01-14 14:59 ` Mark Salter
2016-01-14 14:01 ` Mark Salter
2016-01-14 14:15 ` Graeme Gregory
2016-01-14 14:24 ` Mark Salter
2016-01-15 12:12 ` Graeme Gregory
2016-01-18 14:04 ` Graeme Gregory
2016-01-19 20:25 ` Bjorn Helgaas
2016-01-19 20:40 ` Russell King - ARM Linux
2016-01-19 23:37 ` Mark Salter
2016-01-14 15:29 ` Mark Salter
2016-01-14 15:38 ` Sinan Kaya
2016-01-14 16:12 ` Lorenzo Pieralisi
2016-01-14 16:38 ` Mark Salter
2016-01-14 17:07 ` Lorenzo Pieralisi
2016-01-14 17:32 ` Mark Salter
2016-01-14 17:59 ` Lorenzo Pieralisi
2016-01-14 18:44 ` Mark Salter [this message]
2016-01-14 22:51 ` Jeremy Linton
2016-01-14 22:55 ` Jeremy Linton
2016-01-15 11:00 ` Hanjun Guo
2016-01-18 14:37 ` Hanjun Guo
2016-01-29 6:43 ` liudongdong (C)
2016-02-01 19:58 ` Duc Dang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1452797092.28109.42.camel@redhat.com \
--to=msalter@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).