All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Tomasz Nowicki <tn@semihalf.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Hanjun Guo <hanjun.guo@linaro.org>,
	Liviu Dudau <Liviu.Dudau@arm.com>,
	linux-acpi@vger.kernel.org, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [Patch v7 4/7] PCI/ACPI: Add interface acpi_pci_root_create()
Date: Fri, 13 Nov 2015 17:03:16 +0000	[thread overview]
Message-ID: <20151113170316.GB15253@red-moon> (raw)
In-Reply-To: <5645DE3A.7040406@semihalf.com>

Please trim your emails, thanks.

On Fri, Nov 13, 2015 at 01:57:30PM +0100, Tomasz Nowicki wrote:
> On 12.11.2015 16:05, Jiang Liu wrote:

[...]

> >>>IA64 actually ignores the translation type flag and just assume it's
> >>>TypeTranslation, so there may be some IA64 BIOS implementations
> >>>accidentally using TypeStatic. That's why we parsing SparseTranslation
> >>>flag without checking TranslationType flag. I feel ARM64 may face the
> >>>same situation as IA64:(
> >>>
> >>>We may expect (TypeStatic, 0-offset) and (TypeTranslation,
> >>>non-0-offset) in real word. For other two combinations, I haven't
> >>>found a real usage yet, though theoretically they are possible.

I do not understand why (TypeStatic, non-0-offset) is not a valid
option. Aren't there any (x86) platforms with a CPU<->PCI _physical_
address space offset out there (I am talking about memory space) ?

> >>I think we should not bend the generic code for IA64 only and expose
> >>other platforms to the same issue. Instead, lets interpret spec
> >>correctly and create IA64 quirk for the sake of backward compatibility.
> >>Thoughts?
> >I think there are at least two factors related to this issue.
> >
> >First we still lack of a way/framework to fix errors in ACPI resource
> >descriptors. Recently we have refined ACPI resource parsing interfaces
> >and enforced strictly sanity check. This brings us some regressions
> >which are really BIOS flaws, but it used to work and now breaks:(
> >I'm still struggling to get those regressions fixed. So we may run
> >into the same situation if we enforce strict check for TranslationType:(
> >
> >Second enforcing strict check doesn't bring us too much benifits.
> >Translation type is almost platform specific, and we haven't found a
> >platform support both TypeTranslation and TypeStatic, so arch code
> >may assume the correct translation type no matter what BIOS reports.
> >So it won't hurt us even BIOS reports wrong translation type.

TBH I still do not understand what TranslationType actually means,
I will ask whoever added that to the specification to understand it.

> That is my point, lets pass down all we need from resource range
> descriptors to arch code, then archs with known quirks can whatever
> is needed to make it works. However, generic code like
> acpi_decode_space cannot play with offsets with silent IA64
> assumption.
> 
> To sum it up, your last patch looks ok to me modulo Lorenzo's concern:
> >>>>>> If we go with this approach though, you are not adding the offset to
> >>>>>> the resource when parsing the memory spaces in acpi_decode_space(),
> >>>>>> are we
> >>>>>> sure that's what we really want ?
> >>>>>>
> >>>>>> In DT, a host bridge range has a:
> >>>>>>
> >>>>>> - CPU physical address
> >>>>>> - PCI bus address
> >>>>>>
> >>>>>> We use that to compute the offset between primary bus (ie CPU
> physical
> >>>>>> address) and secondary bus (ie PCI bus address).
> >>>>>>
> >>>>>> The value ending up in the PCI resource struct (for memory space) is
> >>>>>> the CPU physical address, if you do not add the offset in
> >>>>>> acpi_decode_space
> >>>>>> that does not hold true on platforms where CPU<->PCI offset != 0 on
> >>>>>> ACPI,
> >>>>>> am I wrong ?
> His concern is that your patch will cause:
> acpi_pci_root_validate_resources(&device->dev, list,
> 				 IORESOURCE_MEM);
> to fail now.

Not really. My concern is that there might be platforms out there with
an offset between the CPU and PCI physical address spaces, and if we
remove the offset value in acpi_decode_space we can break them,
because in the kernel struct resource data we have to have CPU physical
addresses, not PCI ones. If offset == 0, we are home and dry, I do not
understand why that's a given, which is what we would assume if Jiang's
patch is merged as-is unless I am mistaken.

Thanks,
Lorenzo

  reply	other threads:[~2015-11-13 17:02 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14  6:29 [Patch v7 0/7] Consolidate ACPI PCI root common code into ACPI core Jiang Liu
2015-10-14  6:29 ` [Patch v7 1/7] ACPI/PCI: Enhance ACPI core to support sparse IO space Jiang Liu
2015-10-14  6:29 ` [Patch v7 2/7] ia64/PCI/ACPI: Use common ACPI resource parsing interface for host bridge Jiang Liu
2015-10-14  6:29 ` [Patch v7 3/7] ia64/PCI: Use common struct resource_entry to replace struct iospace_resource Jiang Liu
2015-10-14  6:29 ` [Patch v7 4/7] PCI/ACPI: Add interface acpi_pci_root_create() Jiang Liu
2015-10-15 20:47   ` Bjorn Helgaas
2015-10-21  9:57   ` Tomasz Nowicki
2015-10-21 11:02     ` Liviu Dudau
2015-10-21 11:27       ` Tomasz Nowicki
2015-10-21 11:42         ` Lorenzo Pieralisi
2015-10-21 12:16           ` Tomasz Nowicki
2015-10-21 11:48         ` Liviu Dudau
2015-10-21 11:49         ` Jiang Liu
2015-10-21 11:52           ` Liviu Dudau
2015-10-21 11:52             ` Liviu Dudau
2015-11-05 14:21   ` Tomasz Nowicki
2015-11-05 18:19     ` Lorenzo Pieralisi
2015-11-06  7:55       ` Jiang Liu
2015-11-06  8:52       ` Jiang Liu
2015-11-06 10:37         ` Tomasz Nowicki
2015-11-06 11:46           ` Jiang Liu
2015-11-06 12:40             ` Tomasz Nowicki
2015-11-06 13:22               ` Jiang Liu
2015-11-06 14:45                 ` Lorenzo Pieralisi
2015-11-06 15:32                   ` Jiang Liu
2015-11-06 15:44                     ` Jiang Liu
2015-11-23 15:23                       ` Sinan Kaya
2015-11-09 14:07                 ` Tomasz Nowicki
2015-11-09 17:10                   ` Lorenzo Pieralisi
2015-11-09 20:09                     ` Arnd Bergmann
2015-11-10  5:50                       ` Jiang Liu
2015-11-11 17:46                         ` Lorenzo Pieralisi
2015-11-11 18:12                           ` Liviu Dudau
2015-11-11 18:12                             ` Liviu Dudau
2015-11-11 20:55                           ` Arnd Bergmann
2015-11-12 12:08                             ` Lorenzo Pieralisi
2015-11-12  8:43                           ` Jiang Liu
2015-11-12 13:21                             ` Tomasz Nowicki
2015-11-12 14:04                               ` Jiang Liu
2015-11-12 14:45                                 ` Tomasz Nowicki
2015-11-12 15:05                                   ` Jiang Liu
2015-11-13 12:57                                     ` Tomasz Nowicki
2015-11-13 17:03                                       ` Lorenzo Pieralisi [this message]
2015-11-13 17:49                                         ` Jiang Liu
2015-11-20 10:18                                           ` Lorenzo Pieralisi
2015-11-27  6:59                                             ` Tomasz Nowicki
2015-11-06 12:51         ` Lorenzo Pieralisi
2015-11-06 10:18       ` Tomasz Nowicki
2015-11-06  7:51     ` Jiang Liu
2015-10-14  6:29 ` [Patch v7 5/7] ACPI, PCI: Reset acpi_root_dev->domain to 0 when pci_ignore_seg is set Jiang Liu
2015-10-14  6:29 ` [Patch v7 6/7] x86/PCI/ACPI: Use common interface to support PCI host bridge Jiang Liu
2015-10-15 20:46   ` Bjorn Helgaas
2015-10-14  6:29 ` [Patch v7 7/7] ia64/PCI/ACPI: " Jiang Liu
2015-10-15 20:48 ` [Patch v7 0/7] Consolidate ACPI PCI root common code into ACPI core Bjorn Helgaas
2015-10-15 21:49   ` Rafael J. Wysocki
2015-10-16  1:56     ` Jiang Liu

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=20151113170316.GB15253@red-moon \
    --to=lorenzo.pieralisi@arm.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=hanjun.guo@linaro.org \
    --cc=jiang.liu@linux.intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=tn@semihalf.com \
    --cc=x86@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.