From: Martyn Welch <martyn.welch@ge.com>
To: gregkh@suse.de, cota@braap.org, devel@driverdev.osuosl.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/8] staging: vme: allow explicit assignment of bus numbers
Date: Mon, 01 Aug 2011 16:50:01 +0100 [thread overview]
Message-ID: <4E36CB29.2030907@ge.com> (raw)
In-Reply-To: <20110801143102.GA9705@becoht-mvanga>
On 01/08/11 15:31, Manohar Vanga wrote:
> Hi Martyn,
>
>> I assume this is in a system where there are more than one type of bridge
>> (i.e. a ca91c042 and tsi148).
>
> Yes. This is referring to multiple bridges on a single PCI bus (in the case of
> the existing bridges). In practice we have only a single bridge of a single
> type. We can however have multiple types of bridges (eg. 1 TSI148 and 1 Universe).
> This solution is specifically for such situations.
>
>> I'm not sure that passing a list of bus numbers to each driver is the correct
>> way to resolve this. This issue also exists for hard drives and ethernet
>> devices as well.
>
> This solution won't help the cases where multiple bridges of the same type are
> present (as we cannot control probe order) however in the case of multiple
> bridges of differing types, it helps in deterministically assigning numbers to
> the bridge.
>
> The array was created simply for the reason that the code allows for multiple
> bridges of the same kind. In practice we have only one of a specific kind.
>
>> The network subsystem either has or uses a mechanism to allow udev rules to
>> rename the devices (this seems to be done by MAC address on my system).
>>
>> I believe drive ordering is resolved to some extent with UUIDs. Persistent
>> device naming can be provided by using udev rules to create symlinks (such as
>> "/dev/cdrom" etc), with the drives are determined by system topology.
>>
>> I'm wondering whether re-ordering the bus numbering based on system topology
>> using udev rules (where persistent bus numbering is required), or bind based
>> on system topology and not need persistent numbering at all).
>
> The problem here is that it is kernel space that requires a consistent
> numbering so creating symlinks is not a useful solution for this. (unless the
> driver loader script queries each device for its UUID at startup which seems
> a little like a roundabout way).
>
No I'm thinking more along the lines of how the persistent device names seem
to be created. For example, on my system udev is used to create a symlink
called "/dev/cdrom" using this udev rule:
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*",
ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-1:0:0:0", SYMLINK+="cdrom",
ENV{GENERATED}="1"
The bit that might be more useful to us is the ENV{ID_PATH}, the
"pci-0000:00:1f.2" bit in particular. If I'm not mistaken, this is sufficient
to identify a PCI device (such as a VME bridge)
> The VME drivers require a list of bus numbers that it passes to the VME
> driver so it knows which buses/bridges to probe on. We need to pass this to
> the drivers during load time. Are you recommending we change this to UUID's?
>
I'm thinking of the topology that is used in the above example to uniquely
identify a specific SATA device.
We could either provide the above paths, or rename buses similar to how
network interfaces are renamed (hence why I mentioned them as well). Of course
renaming the buses has the disadvantage that the correct names will only be in
place once the board has got to user space, so the drivers would have to be
built as modules.
> Also, if we replace a card entirely (eg. in the case of a malfunction), the
> UUID changes and we need to update a lot of local files to maintain the
> automated startup (Please correct me if I'm wrong here). This would become a
> mess to maintain really quickly.
>
I assume that you replace like with like, so the bridges are found in the same
order (if you have more than one of the same bridge). In this case the
topology will be the same, so you should reliably be able to replace cards.
> In this patch, we don't solve the issue of multiple bridges of the same kind
> but we solve the automation issue in cases of different types of bridge.
As long as you only have one type of each...
I'm wondering whether an approach as above may reliably solve both.
Martyn
> We already maintain a database with configuration options for each crate
> and a bus number can be easily added. This won't change in the case of card
> replacement.
>
> --
> /manohar
--
Martyn Welch (Principal Software Engineer) | Registered in England and
GE Intelligent Platforms | Wales (3828642) at 100
T +44(0)127322748 | Barbirolli Square, Manchester,
E martyn.welch@ge.com | M2 3AB VAT:GB 927559189
next prev parent reply other threads:[~2011-08-01 15:50 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-01 10:20 [PATCH 0/8] VME Driver Fixes Manohar Vanga
2011-08-01 10:20 ` [PATCH 1/8] staging: vme_user: change kmalloc+memset to kzalloc Manohar Vanga
2011-08-01 10:52 ` Martyn Welch
2011-08-10 7:44 ` Martyn Welch
2011-08-01 10:20 ` [PATCH 2/8] staging: vme: allow explicit assignment of bus numbers Manohar Vanga
2011-08-01 11:10 ` Dan Carpenter
2011-08-01 12:12 ` Manohar Vanga
2011-08-01 13:06 ` Martyn Welch
2011-08-01 14:31 ` Manohar Vanga
2011-08-01 15:50 ` Martyn Welch [this message]
2011-08-02 11:54 ` Manohar Vanga
2011-08-02 14:57 ` Martyn Welch
2011-08-03 8:54 ` Martyn Welch
2011-08-04 9:16 ` Manohar Vanga
2011-08-01 10:20 ` [PATCH 3/8] staging: vme: make [alloc|free]_consistent bridge specific Manohar Vanga
2011-08-01 11:10 ` Dan Carpenter
2011-08-01 12:24 ` Manohar Vanga
2011-08-01 13:41 ` Martyn Welch
2011-08-01 13:40 ` Manohar Vanga
2011-08-01 14:00 ` Manohar Vanga
2011-08-01 14:05 ` Martyn Welch
2011-08-01 10:20 ` [PATCH 4/8] staging: vme: keep track of registered buses Manohar Vanga
2011-08-01 10:20 ` [PATCH 5/8] staging: vme: add functions for bridge module refcounting Manohar Vanga
2011-08-03 14:04 ` Martyn Welch
2011-08-03 14:06 ` Manohar Vanga
2011-08-03 15:23 ` Emilio G. Cota
2011-08-04 7:23 ` Martyn Welch
2011-08-04 16:34 ` Emilio G. Cota
2011-08-05 7:45 ` Martyn Welch
2011-08-05 9:04 ` Manohar Vanga
2011-08-05 9:24 ` Martyn Welch
2011-08-05 17:47 ` Emilio G. Cota
2011-08-08 8:01 ` Martyn Welch
2011-08-08 9:14 ` Emilio G. Cota
2011-08-08 9:42 ` Martyn Welch
[not found] ` <4E3FABDA.8080204@ge.com>
[not found] ` <20110808101140.GA21300@flamenco.cs.columbia.edu>
2011-08-08 11:06 ` Martyn Welch
2011-08-08 17:22 ` Emilio G. Cota
2011-08-08 18:04 ` Greg KH
2011-08-09 9:00 ` Martyn Welch
2011-08-09 19:19 ` Emilio G. Cota
2011-08-10 7:39 ` Martyn Welch
2011-08-10 9:15 ` Emilio G. Cota
2011-08-10 9:50 ` Martyn Welch
2011-08-10 18:35 ` Emilio G. Cota
2011-08-09 13:24 ` Manohar Vanga
2011-08-09 14:26 ` Martyn Welch
2011-08-09 14:35 ` Manohar Vanga
2011-08-09 15:05 ` Martyn Welch
2011-08-09 18:49 ` Emilio G. Cota
2011-08-10 6:52 ` Manohar Vanga
2011-08-01 10:20 ` [PATCH 6/8] staging: vme: rename *_slot_get to *_get_slot Manohar Vanga
2011-08-01 12:29 ` Martyn Welch
2011-08-01 12:31 ` Manohar Vanga
2011-08-09 15:18 ` Martyn Welch
2011-08-09 15:25 ` Greg KH
2011-08-09 15:32 ` Manohar Vanga
2011-08-01 10:20 ` [PATCH 7/8] staging: vme: add struct vme_dev for VME devices Manohar Vanga
2011-08-09 15:19 ` Martyn Welch
2011-08-01 10:20 ` [PATCH 8/8] staging: vme: make match() driver specific to improve non-VME64x support Manohar Vanga
2011-08-03 9:16 ` Martyn Welch
2011-08-03 12:18 ` Manohar Vanga
2011-08-01 14:29 ` [PATCH 0/8] VME Driver Fixes Martyn Welch
2011-08-01 14:32 ` Manohar Vanga
2011-08-23 22:07 ` Greg KH
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=4E36CB29.2030907@ge.com \
--to=martyn.welch@ge.com \
--cc=cota@braap.org \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox