All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lukas Wunner <lukas@wunner.de>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Wolfram Sang <wsa@kernel.org>, Jean Delvare <jdelvare@suse.de>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Lee Jones <lee.jones@linaro.org>,
	Hans de Goede <hdegoede@redhat.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Tan Jui Nee <jui.nee.tan@intel.com>, Kate Hsuan <hpa@redhat.com>,
	Jonathan Yong <jonathan.yong@intel.com>,
	linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org,
	linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org,
	platform-driver-x86@vger.kernel.org,
	Borislav Petkov <bp@alien8.de>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Tony Luck <tony.luck@intel.com>,
	James Morse <james.morse@arm.com>,
	Robert Richter <rric@kernel.org>,
	Peter Tyser <ptyser@xes-inc.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Mark Gross <markgross@kernel.org>,
	Henning Schild <henning.schild@siemens.com>
Subject: Re: [PATCH v4 1/8] platform/x86/intel: Add Primary to Sideband (P2SB) bridge support
Date: Sun, 8 May 2022 09:13:08 +0200	[thread overview]
Message-ID: <20220508071308.GA27815@wunner.de> (raw)
In-Reply-To: <CAHp75VdQqQj0fS6t5nYj+7rJ1tuSt7+5GT78eN06PShWnrDZgA@mail.gmail.com>

On Thu, May 05, 2022 at 07:54:49PM +0200, Andy Shevchenko wrote:
> On Thu, May 5, 2022 at 4:55 PM Lukas Wunner <lukas@wunner.de> wrote:
> > On Mon, Jan 31, 2022 at 05:13:39PM +0200, Andy Shevchenko wrote:
> > > Background information
> > > ======================
> >
> > The wealth of information in the commit message obscures what the
> > actual problem is, which is actually quite simple:  SoC features
> > such as GPIO are accessed via a reserved MMIO area, we don't know
> > its address but can obtain it from the BAR of the P2SB device,
> > that device is normally hidden so we have to temporarily unhide it.
> 
> Right, but this long commit message was a result of the previous
> discussions with Bjorn. If we're ever going to handle something like
> this in the PCI core, perhaps he won't be happy if I remove it. Maybe
> we can simply state what you wrote as a problem statement and move
> this chapter at the end?

Yes, feel free to copy-paste the synopsis from my e-mail above
and rephrase as you see fit.


> > > On top of that in some cases P2SB is represented by function 0 on PCI
> > > slot (in terms of B:D.F) and according to the PCI specification any
> > > other function can't be seen until function 0 is present and visible.
> >
> > I find that paragraph confusing:  Do multi-function P2SB devices exist?
> > What are the other functions?  Are they visible but merely not enumerated
> > because function 0 is not visible?
> 
> The case I see is when we want to read the BAR from another slot of a
> PCI device, 0 function of which is P2SB. Since P2SB is hidden, the
> other device is hidden as well. Any idea how to reformulate this? And
> yes, we have this in the existing SoCs.

The spec you linked to in the commit message (for the 100 series chipset)
says that P2SB is located at Device 31 Function 1.

In those chipsets where P2SB is function 0, what kind of devices are
at functions 1 and higher?


> > Do you really need all the complicated logic in __pci_bus_read_base()?
> > For comparison, simatic_ipc_get_membase0() in simatic-ipc.c merely does:
> >
> >         pci_bus_read_config_dword(bus, p2sb, PCI_BASE_ADDRESS_0, &bar0);
> >
> > If that's sufficient for simatic-ipc.c, why is the more complicated code
> > necessary in p2sb.c?
> 
> Since it's a PCI device I want to follow what PCI core does with it.
> As I explained somewhere that the current code (actually it's a
> simplified version of what is done in PCI core) follows what spec
> requires. I would like to be in alignment with the spec, while it
> still may work with less code. Besides that, it's theoretically
> possible that the base address may be 64-bit in new SoCs, I won't
> rewrite code again just because we abused the spec.

So as an alternative to copy-pasting __pci_bus_read_base(),
you could just call pci_scan_single_device().  This will create
a proper pci_dev that you can work with.  Note that no driver will
be bound to the device because of:

  pci_scan_single_device()
    pci_device_add()
      dev->match_driver = false

After you've read the BAR, get rid of the pci_dev with pci_destroy_dev().


> > > +     /*
> > > +      * I don't know how l can have all bits set.  Copied from old code.
> > > +      * Maybe it fixes a bug on some ancient platform.
> > > +      */
> > > +     if (PCI_POSSIBLE_ERROR(l))
> > > +             l = 0;
> >
> > l can have all bits set if the device was hot-removed.  That can't happen
> > with a built-in device such as P2SB.
> 
> Can be dropped, indeed. But that chicken bit emulates that :-) Anyway,
> we unhide the device before looking into it, so we shouldn't have the
> surprise "removals".

pci_lock_rescan_remove() prevents concurrent unhiding as well as
removal via sysfs.

Thanks,

Lukas

  reply	other threads:[~2022-05-08  7:22 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-31 15:13 [PATCH v4 0/8] platform/x86: introduce p2sb_bar() helper Andy Shevchenko
2022-01-31 15:13 ` [PATCH v4 1/8] platform/x86/intel: Add Primary to Sideband (P2SB) bridge support Andy Shevchenko
2022-02-14 11:26   ` Hans de Goede
2022-05-05 14:55   ` Lukas Wunner
2022-05-05 17:54     ` Andy Shevchenko
2022-05-08  7:13       ` Lukas Wunner [this message]
2022-05-08 10:05         ` Andy Shevchenko
2022-05-08 10:50           ` Lukas Wunner
2022-01-31 15:13 ` [PATCH v4 2/8] pinctrl: intel: Check against matching data instead of ACPI companion Andy Shevchenko
2022-01-31 15:13 ` [PATCH v4 3/8] mfd: lpc_ich: Factor out lpc_ich_enable_spi_write() Andy Shevchenko
2022-01-31 15:13 ` [PATCH v4 4/8] mfd: lpc_ich: Switch to generic p2sb_bar() Andy Shevchenko
2022-01-31 15:13 ` [PATCH v4 5/8] mfd: lpc_ich: Add support for pinctrl in non-ACPI system Andy Shevchenko
2022-02-15 16:54   ` Lee Jones
2022-02-15 17:11     ` Andy Shevchenko
2022-02-15 17:29       ` Lee Jones
2022-05-02 16:14         ` Andy Shevchenko
2022-05-04 12:52         ` Andy Shevchenko
2022-03-07 18:21   ` Henning Schild
2022-03-07 19:03     ` Andy Shevchenko
2022-01-31 15:13 ` [PATCH v4 6/8] i2c: i801: convert to use common P2SB accessor Andy Shevchenko
2022-02-03 14:14   ` Jean Delvare
2022-02-07 12:11   ` Wolfram Sang
2022-01-31 15:13 ` [PATCH v4 7/8] EDAC, pnd2: Use proper I/O accessors and address space annotation Andy Shevchenko
2022-01-31 15:13 ` [PATCH v4 8/8] EDAC, pnd2: convert to use common P2SB accessor Andy Shevchenko
2022-03-07 17:27 ` [PATCH v4 0/8] platform/x86: introduce p2sb_bar() helper Henning Schild
2022-03-08 19:35 ` [PATCH 0/2] simatic-ipc additions to p2sb apl lake gpio Henning Schild
2022-03-08 19:35   ` [PATCH 1/2] simatic-ipc: convert to use common P2SB accessor Henning Schild
2022-03-08 20:09     ` Henning Schild
2022-03-08 19:35   ` [PATCH 2/2] leds: simatic-ipc-leds-gpio: add GPIO version of Siemens driver Henning Schild
2022-05-04 12:51   ` [PATCH 0/2] simatic-ipc additions to p2sb apl lake gpio Andy Shevchenko
2022-05-04 15:19     ` Henning Schild
2022-05-04 16:36       ` Andy Shevchenko
2022-05-05 21:57       ` Guenter Roeck
2022-05-10 15:30       ` Henning Schild
2022-05-10 16:05         ` Andy Shevchenko
2022-03-08 19:50 ` [PATCH v4 0/8] platform/x86: introduce p2sb_bar() helper Henning Schild
2022-05-04 12:42   ` Andy Shevchenko
2022-05-04 15:10     ` Henning Schild
2022-05-04 15:55       ` Andy Shevchenko
2022-05-07 10:33         ` Andy Shevchenko

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=20220508071308.GA27815@wunner.de \
    --to=lukas@wunner.de \
    --cc=andy.shevchenko@gmail.com \
    --cc=bp@alien8.de \
    --cc=hdegoede@redhat.com \
    --cc=henning.schild@siemens.com \
    --cc=hkallweit1@gmail.com \
    --cc=hpa@redhat.com \
    --cc=james.morse@arm.com \
    --cc=jdelvare@suse.de \
    --cc=jonathan.yong@intel.com \
    --cc=jui.nee.tan@intel.com \
    --cc=lee.jones@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=markgross@kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=ptyser@xes-inc.com \
    --cc=rric@kernel.org \
    --cc=tony.luck@intel.com \
    --cc=wsa@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.