dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian König" <deathsimple@vodafone.de>
To: Steven Newbury <steve@snewbury.org.uk>, Lukas Wunner <lukas@wunner.de>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: drm_device from another device driver?
Date: Thu, 24 Sep 2015 11:41:41 +0200	[thread overview]
Message-ID: <5603C555.3030206@vodafone.de> (raw)
In-Reply-To: <1443048770.1731.33.camel@snewbury.org.uk>


[-- Attachment #1.1: Type: text/plain, Size: 3475 bytes --]

On 24.09.2015 00:52, Steven Newbury wrote:
> On Wed, 2015-09-23 at 23:41 +0200, Lukas Wunner wrote:
>> Hi,
>>
>> On Wed, Sep 23, 2015 at 08:37:48PM +0000, Steven Newbury wrote:
>>> I can't figure out how to get a pointer to the radeon_device struct
>>> for a specific card, or the parent drm_device from an external
>>> device
>>> driver.
>> struct device -> struct drm_device: dev_get_drvdata()
>> struct pci_dev -> struct drm_device: pci_get_drvdata()
>> struct drm_device -> struct radeon_device: drm_device->dev_private
>>
> Thanks, that's useful.
>
>>> I imagine I somehow need to take a reference to the drm class
>>> kobject
>>> for the card in question, and in so doing presumably I should then
>>> be
>>> able to discover the pointer to device.
>> It sounds like you want to discover the available radeon cards in the
>> system? If so you could iterate over all pci devices and look for
>> pci->vendor == PCI_VENDOR_ID_ATI || pci->vendor == PCI_VENDOR_ID_AMD,
>> then get to the radeon_device as shown above.
>>
> Yes, my plan was to eventually discover all the drm devices on the
> system and make available a sysfs entry to allocate a volume from VRAM
> for each capable card selecting an appropriate backend for driver.  I
> was initially just going to implement it for radoen using a static
> allocation from module params.
>
>> However as Christian König pointed out, memory allocation is driver
>> dependent. For an initial proof of concept it may be simplest to hack
>> the radeon driver. Then you'll get an idea which parts are generic
>> and
>> which are driver specific and you can move the generic stuff to a
>> central broker.
>>
> Hacking the radeon driver was very much something I'd considered; I'd
> only decided not to because I was thinking too far ahead really.  I
> need to keep it simple, as you say, and only add complexity once I have
> something working, and hopefully able to demonstrate its utility.
>
>> Rather than discovering the VRAM it probably makes more sense to have
>> drm devices register a set of callbacks with the central broker
>> (e.g. return amount of currently free VRAM, allocate VRAM for use as
>> block device, deallocate VRAM, read vector of blocks, write vector
>> of blocks). The broker could then be controlled from user space via
>> sysfs or ioctls or whatever.
> For now I think I'll just take the approach bcache does with "thinly
> provisioned volumes", and have an entry in the radeon sysfs:
>
> /sys/class/drm/card0/device/vram_volume_create
>
> which will attempt to allocate a given sized volume and register a
> vrambd[0]. (or some better name?) Unregistering/deallocation can be
> triggered from /sys/block/vramd[0]/vrambd/unregister

Yeah, that approach sounds reasonable to me I would just go into a 
different direction with the sysfs interface.

It doesn't make much sense to have more than one volume for each card 
(doesn't it?). So I would rather say instead of having a 
vram_volume_create sysfs you should rather go with something like 
vram_volume_size.

E.g. setting the size makes the volume available, setting it to zero 
tries to free it again. If anybody is using it while you try to change 
the size return -EBUSY.

Regards,
Christian.

>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


[-- Attachment #1.2: Type: text/html, Size: 4870 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

      reply	other threads:[~2015-09-24  9:41 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-21 11:33 block device backed by DRM buffer object Steven Newbury
2015-09-21 13:05 ` Christian König
2015-09-22 20:44   ` Steven Newbury
2015-09-23 20:37     ` drm_device from another device driver? (was: Re: block device backed by DRM buffer object) Steven Newbury
2015-09-23 21:41       ` Lukas Wunner
2015-09-23 22:52         ` Steven Newbury
2015-09-24  9:41           ` Christian König [this message]

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=5603C555.3030206@vodafone.de \
    --to=deathsimple@vodafone.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=lukas@wunner.de \
    --cc=steve@snewbury.org.uk \
    /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