From: Bjorn Helgaas <helgaas@kernel.org> To: Huacai Chen <chenhuacai@kernel.org> Cc: Bjorn Helgaas <bhelgaas@google.com>, Daniel Vetter <daniel@ffwll.ch>, Greg KH <gregkh@linuxfoundation.org>, David Airlie <airlied@linux.ie>, Maling list - DRI developers <dri-devel@lists.freedesktop.org>, Xuefeng Li <lixuefeng@loongson.cn>, Huacai Chen <chenhuacai@loongson.cn>, Linux PCI <linux-pci@vger.kernel.org> Subject: Re: [PATCH] vgaarb: Call vga_arb_device_init() after PCI enumeration Date: Sat, 5 Jun 2021 12:59:36 -0500 [thread overview] Message-ID: <20210605175936.GA2309279@bjorn-Precision-5520> (raw) In-Reply-To: <CAAhV-H6MCGXiO3EcZV2BZi91AiUNsu2aZ=e9g4e2tcVVNOLbfg@mail.gmail.com> On Sat, Jun 05, 2021 at 10:02:05AM +0800, Huacai Chen wrote: > On Sat, Jun 5, 2021 at 3:56 AM Bjorn Helgaas <helgaas@kernel.org> wrote: > > On Fri, Jun 04, 2021 at 12:50:03PM +0800, Huacai Chen wrote: > > > On Thu, Jun 3, 2021 at 2:31 AM Bjorn Helgaas <bhelgaas@google.com> wrote: > > > > I think the simplest solution, which I suggested earlier [1], > > > > would be to explicitly call vga_arbiter_add_pci_device() > > > > directly from the PCI core when it enumerates a VGA device. > > > > Then there's no initcall and no need for the > > > > BUS_NOTIFY_ADD/DEL_DEVICE stuff. vga_arbiter_add_pci_device() > > > > could set the default VGA device when it is enumerated, and > > > > change the default device if we enumerate a "better" one. And > > > > hotplug VGA devices would work automatically. > > > > > > Emm, It seems that your solution has some difficulties to remove > > > the whole initcall(vga_arb_device_init): we call > > > vga_arbiter_add_pci_device() in pci_bus_add_device(), the > > > list_for_each_entry() loop can be moved to > > > vga_arbiter_check_bridge_sharing(), > > > vga_arb_select_default_device() can be renamed to > > > vga_arb_update_default_device() and be called in > > > vga_arbiter_add_pci_device(), but how to handle > > > misc_register(&vga_arb_device)? > > > > Might need to keep vga_arb_device_init() as an initcall, but > > remove everything from it except the misc_register(). > > OK, let me try. But I think call vga_arbiter_add_pci_device() in > pci core is nearly the same as notifier. Anyway, I will send a new > patch later. Notifiers are useful in some situations, for example, if a loadable module needs to be called when a device is added or removed. But when possible, I will always choose a direct call instead because it's much less complicated. The VGA arbiter cannot be a loadable module, so I don't think there's any reason to use a notifier in this case. Bjorn
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org> To: Huacai Chen <chenhuacai@kernel.org> Cc: David Airlie <airlied@linux.ie>, Greg KH <gregkh@linuxfoundation.org>, Maling list - DRI developers <dri-devel@lists.freedesktop.org>, Linux PCI <linux-pci@vger.kernel.org>, Bjorn Helgaas <bhelgaas@google.com>, Xuefeng Li <lixuefeng@loongson.cn>, Huacai Chen <chenhuacai@loongson.cn> Subject: Re: [PATCH] vgaarb: Call vga_arb_device_init() after PCI enumeration Date: Sat, 5 Jun 2021 12:59:36 -0500 [thread overview] Message-ID: <20210605175936.GA2309279@bjorn-Precision-5520> (raw) In-Reply-To: <CAAhV-H6MCGXiO3EcZV2BZi91AiUNsu2aZ=e9g4e2tcVVNOLbfg@mail.gmail.com> On Sat, Jun 05, 2021 at 10:02:05AM +0800, Huacai Chen wrote: > On Sat, Jun 5, 2021 at 3:56 AM Bjorn Helgaas <helgaas@kernel.org> wrote: > > On Fri, Jun 04, 2021 at 12:50:03PM +0800, Huacai Chen wrote: > > > On Thu, Jun 3, 2021 at 2:31 AM Bjorn Helgaas <bhelgaas@google.com> wrote: > > > > I think the simplest solution, which I suggested earlier [1], > > > > would be to explicitly call vga_arbiter_add_pci_device() > > > > directly from the PCI core when it enumerates a VGA device. > > > > Then there's no initcall and no need for the > > > > BUS_NOTIFY_ADD/DEL_DEVICE stuff. vga_arbiter_add_pci_device() > > > > could set the default VGA device when it is enumerated, and > > > > change the default device if we enumerate a "better" one. And > > > > hotplug VGA devices would work automatically. > > > > > > Emm, It seems that your solution has some difficulties to remove > > > the whole initcall(vga_arb_device_init): we call > > > vga_arbiter_add_pci_device() in pci_bus_add_device(), the > > > list_for_each_entry() loop can be moved to > > > vga_arbiter_check_bridge_sharing(), > > > vga_arb_select_default_device() can be renamed to > > > vga_arb_update_default_device() and be called in > > > vga_arbiter_add_pci_device(), but how to handle > > > misc_register(&vga_arb_device)? > > > > Might need to keep vga_arb_device_init() as an initcall, but > > remove everything from it except the misc_register(). > > OK, let me try. But I think call vga_arbiter_add_pci_device() in > pci core is nearly the same as notifier. Anyway, I will send a new > patch later. Notifiers are useful in some situations, for example, if a loadable module needs to be called when a device is added or removed. But when possible, I will always choose a direct call instead because it's much less complicated. The VGA arbiter cannot be a loadable module, so I don't think there's any reason to use a notifier in this case. Bjorn
next prev parent reply other threads:[~2021-06-05 17:59 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-28 8:26 [PATCH] vgaarb: Call vga_arb_device_init() after PCI enumeration Huacai Chen 2021-06-01 15:56 ` Daniel Vetter 2021-06-01 17:12 ` Greg KH 2021-06-01 18:03 ` Daniel Vetter 2021-06-02 10:36 ` Huacai Chen 2021-06-02 16:22 ` Daniel Vetter 2021-06-02 18:31 ` Bjorn Helgaas 2021-06-02 18:31 ` Bjorn Helgaas 2021-06-02 19:26 ` Daniel Vetter 2021-06-02 19:26 ` Daniel Vetter 2021-06-04 4:50 ` Huacai Chen 2021-06-04 4:50 ` Huacai Chen 2021-06-04 19:56 ` Bjorn Helgaas 2021-06-04 19:56 ` Bjorn Helgaas 2021-06-05 2:02 ` Huacai Chen 2021-06-05 2:02 ` Huacai Chen 2021-06-05 17:59 ` Bjorn Helgaas [this message] 2021-06-05 17:59 ` Bjorn Helgaas 2021-06-12 4:40 ` Huacai Chen 2021-06-12 4:40 ` Huacai Chen 2021-06-02 7:43 ` Huacai Chen
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=20210605175936.GA2309279@bjorn-Precision-5520 \ --to=helgaas@kernel.org \ --cc=airlied@linux.ie \ --cc=bhelgaas@google.com \ --cc=chenhuacai@kernel.org \ --cc=chenhuacai@loongson.cn \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=gregkh@linuxfoundation.org \ --cc=linux-pci@vger.kernel.org \ --cc=lixuefeng@loongson.cn \ /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: linkBe 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.