linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	x86@kernel.org, Dave Airlie <airlied@redhat.com>
Subject: Re: [PATCH] PCI, x86: fix default vga ref_count
Date: Tue, 18 Sep 2012 15:39:27 -0700	[thread overview]
Message-ID: <CAE9FiQVPHoehcDfVqN-5=Hso0J9vf3+y=3PCz+GncGC5CvvZ4Q@mail.gmail.com> (raw)
In-Reply-To: <CAErSpo54VVFHj4TDA5JELW0LwFVMXjVOJywwFQ4fo4C1rX69mQ@mail.gmail.com>

On Tue, Sep 18, 2012 at 3:15 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> On Fri, Sep 14, 2012 at 6:48 PM, Yinghai Lu <yinghai@kernel.org> wrote:
>> when __ARCH_HAS_VGA_DEFAULT_DEVICE is not defined, aka EFIFB is not used,
>>
>> for static path, vga_default setting is through vga_arbiter_add_pci_device.
>> and for x86 pci_fixup_video, will skip that.
>> because subsys_initcall(vga_arb_device_init) come first to call vga_arbiter_add_pci_device.
>>
>> for hotplug path, even vga_arbiter_add_pci_device is called via notifier, but it
>> will check VGA_RSRC_LEGACY_MASK that is not set for hotplug path.
>> So x86 pci_fixup_video will take over to call vga_set_default_device().
>>
>> We need to hold one dev reference there.
>>
>> otherwise vga_arbiter_del_pci_device that does not check VGA_RSRC_LEGACY_MASK
>> will call put_device and it will cause ref_count to decrease extra.
>> that will have that device get deleted early wrongly.
>
> I'm sure you're fixing a real bug, but this patch is completely unintelligible.

yes, only can hit this bug while remove root bus with vga adapater.

or remove bridge with child pci device that is vga adapter.

for root bus removal, the less one ref_count will call that pci device
get destroyed too early.

>
> I tried to decipher the changelog and I failed.  I tried to figure out
> the PCI reference counting from the vgaarb code, and I failed there
> too.
>
> Apparently the reference is connected with the vga_default device,
> since that's what vga_arbiter_del_pci_device() checks, but
> vga_set_default_device() is blissfully ignorant of references (and it
> isn't used consistently anyway).

yes, could fix vga_set_default_device instead, but it has two versions
- no __ARCH_HAS_VGA_DEFAULT_DEVICE
- EFI version...

also there is one other user for vga switching...

>
> If you can do some rework to make this all make more sense, that would be great.
>
> While you're at it, look at both the x86 and ia64 versions of
> pci_fixup_video().  They are 90% identical, and it's not clear why
> they should be different.  In fact, it's not clear why there's a fixup
> for x86 and ia64 but not for any other architecture with PCI.

ok, will give it a try.

Thanks

Yinghai

  reply	other threads:[~2012-09-18 22:39 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-15  0:48 [PATCH] PCI, x86: fix default vga ref_count Yinghai Lu
2012-09-15  0:48 ` [PATCH] PCI: Use correct type when freeing bus resource list Yinghai Lu
2012-09-18 22:53   ` Bjorn Helgaas
2012-09-15  0:48 ` [PATCH] PCI, x86: clear initial value for root info resources Yinghai Lu
2012-09-18 22:46   ` Bjorn Helgaas
2012-09-18 23:49     ` Yinghai Lu
2012-09-19 13:12       ` Bjorn Helgaas
2012-09-19 17:17         ` Yinghai Lu
2012-09-19 17:49           ` Yinghai Lu
2012-09-19 17:49             ` [PATCH] PCI, ia64: " Yinghai Lu
2012-09-21 16:50             ` [PATCH] PCI, x86: " Konrad Rzeszutek Wilk
     [not found]               ` <CAE9FiQV9WK4NG5+aGwVrGO3ueFH3TmmmG5zea+JjwgtQyngNRg@mail.gmail.com>
2012-09-23 20:33                 ` Konrad Rzeszutek Wilk
2012-09-19 15:34       ` Jiang Liu
2012-09-18 22:15 ` [PATCH] PCI, x86: fix default vga ref_count Bjorn Helgaas
2012-09-18 22:39   ` Yinghai Lu [this message]
2012-09-18 23:44   ` [PATCH] PCI: " Yinghai Lu
2012-09-18 23:54     ` Matthew Garrett

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='CAE9FiQVPHoehcDfVqN-5=Hso0J9vf3+y=3PCz+GncGC5CvvZ4Q@mail.gmail.com' \
    --to=yinghai@kernel.org \
    --cc=airlied@redhat.com \
    --cc=bhelgaas@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --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 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).