All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kyle Moffett <kyle@moffetthome.net>
To: Alex Deucher <alexdeucher@gmail.com>
Cc: "Borislav Petkov" <bp@alien8.de>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Pavel Ivanov" <paivanof@gmail.com>,
	"Michel Dänzer" <michel@daenzer.net>,
	dri-devel@lists.freedesktop.org,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: Kernel almost hangs when CONFIG_DRM_RADEON=y
Date: Mon, 29 Aug 2011 12:28:31 -0400	[thread overview]
Message-ID: <CAGZ=bqKHvauaW8jdPR98d-X5dry_pADYHWH-OsJE_CXT9hdwVw@mail.gmail.com> (raw)
In-Reply-To: <CADnq5_Mppeym2spCqsRGYALQxWDjQ_yNuta4SYRH6Oocy=UjSg@mail.gmail.com>

On Mon, Aug 29, 2011 at 09:48, Alex Deucher <alexdeucher@gmail.com> wrote:
> 2011/8/29 Borislav Petkov <bp@alien8.de>:
>> On Mon, Aug 29, 2011 at 03:20:21PM +0200, Peter Zijlstra wrote:
>>> On Sun, 2011-08-28 at 07:36 +0200, Borislav Petkov wrote:
>>> > > > With CONFIG_DRM_RADEON=y, the microcode is needed before it can be
>>> > > > loaded from userspace, so it needs to be built into the kernel as well.
>>> > >
>>> > > How should I do that? I've tried to set all "m"s to "y" in .config and
>>> > > still saw this issue. Should I set some special parameter?
>>> >
>>> > You need to add "radeon/CEDAR_pfp.bin" to CONFIG_EXTRA_FIRMWARE when you
>>> > configure your kernel and enable CONFIG_FIRMWARE_IN_KERNEL.
>>> >
>>> > The radeon/CEDAR_pfp.bin file (+ leading directory, mind you) should
>>> > most probably be located in /lib/firmware or to whatever you have set
>>> > CONFIG_EXTRA_FIRMWARE_DIR so that Kbuild can find it (if not, you'll get
>>> > a warning at the end of the kernel build). This way, it works for both
>>> > radeon being =m and =y.
>>>
>>> Should we make Kconfig pop up a dialog and ask for the whereabouts of
>>> these firmware thingies when you mark the driver =y?
>>>
>>> This all sounds like magic to me, having to know you need to add to
>>> EXTRA_FIRMWARE, having to know what file it needs etc.. For all intents
>>> and purposes =y just doesn't work and that's broken.
>>
>> Yep, you make a lot of sense. I had to fumble the build/reboot cycle a
>> couple of times and do some code staring even to figure this out. In
>> the end, I copied the whole radeon/ folder from David's firmware git
>> repo into /lib/firmware and made radeon.ko =m again so that I don't have
>> to add *.bin entries to CONFIG_EXTRA_FIRMWARE each time I'm building a
>> kernel on a different machine.
>>
>> Besides, there was this other issue on lkml today where
>> CONFIG_EXTRA_FIRMWARE can cause nconf to segfault when you overflow
>> its length of 256 by trying to include a bunch of firmware *bin files:
>> http://lkml.org/lkml/2011/8/29/86
>
> If you are going to build the ucode into your kernel you'll need to
> pick the ones you want to include or increase the limit regardless of
> whether it's radeon ucode or ucode for some other chip.  For a
> particular card you only need the ones for that card (e.g.,
> CEDAR_*.bin or REDWOOD_*.bin, etc.)

No, Linus pushed back really hard last time this issue came up with
something; a network driver if I recall correctly.

The issue is that this happens *EVEN FOR MODULAR DRIVERS* during
suspend/resume.  The firmware simply may not be available yet.

If the driver fundamentally cannot work without the firmware then it should
bind to the device and wait until the first userspace action before requesting
firmware.

Furthermore, the trend is generally to push the firmware OUT of the kernel
binary to avoid any chance of license issues.  Even if the code is built-in
it should not need built-in firmware.

The quickest fix is probably something like this:

config DRM_RADEON_FIRMWARE
        tristate
        default m if STANDALONE
        default y

config DRM_RADEON
        depends DRM_RADEON_FIRMWARE

That should prevent somebody from building the radeon driver into the
kernel unless they manually indicate that they have the extra firmware.

Long-term, the driver should support modular firmware even when it's
built-in to the kernel.

Cheers,
Kyle Moffett

  parent reply	other threads:[~2011-08-29 16:28 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-27  4:20 Kernel almost hangs when CONFIG_DRM_RADEON=y Pavel Ivanov
2011-08-27  9:00 ` Michel Dänzer
2011-08-27 22:50   ` Pavel Ivanov
2011-08-28  5:36     ` Borislav Petkov
2011-08-28 21:47       ` Pavel Ivanov
2011-08-28 21:47         ` Pavel Ivanov
2011-08-29  5:49         ` Borislav Petkov
2011-08-29  6:04           ` Michel Dänzer
2011-08-29  6:04             ` Michel Dänzer
2011-08-29 13:20       ` Peter Zijlstra
2011-08-29 13:38         ` Borislav Petkov
2011-08-29 13:43           ` Dave Airlie
2011-08-29 13:48           ` Alex Deucher
2011-08-29 14:16             ` Borislav Petkov
2011-08-29 15:47               ` David Airlie
2011-08-29 15:55                 ` Borislav Petkov
2011-08-29 16:10                   ` Arnaud Lacombe
2011-08-29 16:10                     ` Arnaud Lacombe
2011-08-29 17:17                     ` Borislav Petkov
2011-08-29 17:38                       ` Michel Dänzer
2011-08-29 17:38                         ` Michel Dänzer
2011-08-29 17:50                       ` Peter Zijlstra
2011-08-29 18:09                       ` Peter Zijlstra
2011-08-29 18:16                       ` Peter Zijlstra
2011-08-29 21:14                         ` Borislav Petkov
2011-08-30  2:08                           ` Henrique de Moraes Holschuh
2011-08-30  2:08                           ` Henrique de Moraes Holschuh
2011-08-30  7:17                             ` Borislav Petkov
2011-08-30  7:17                               ` Borislav Petkov
2011-08-30 14:44                               ` Henrique de Moraes Holschuh
2011-08-30 14:44                               ` Henrique de Moraes Holschuh
2011-08-30  8:37                             ` Peter Zijlstra
2011-08-30 14:55                               ` Henrique de Moraes Holschuh
2011-08-29 16:28             ` Kyle Moffett [this message]
2011-08-29 17:21               ` Borislav Petkov
2011-08-29 17:51                 ` Peter Zijlstra
2011-08-27 23:03   ` Kyle Moffett

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='CAGZ=bqKHvauaW8jdPR98d-X5dry_pADYHWH-OsJE_CXT9hdwVw@mail.gmail.com' \
    --to=kyle@moffetthome.net \
    --cc=alexdeucher@gmail.com \
    --cc=bp@alien8.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michel@daenzer.net \
    --cc=paivanof@gmail.com \
    --cc=peterz@infradead.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.