drivers/gpu/drm/drm_gem.c | 13 +++++++------ drivers/gpu/drm/drm_gem_dma_helper.c | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-)
Replace the DRM_* logging macros used in gem helper files with the
appropriate ones specified in /include/drm/drm_print.h.
Signed-off-by: Athul Raj Kollareth <krathul3152@gmail.com>
---
Changes in v4:
- Some codestyle corrections.
- Remove OOM error logging in drm_gem_init().
Changes in v3:
- Revert all changes to drm_gem_objects_lookup().
- Use drm_device from minor.
Changes in v2:
- Change drm_gem_objects_lookup() to take a drm_device* argument.
- Make appropriate changes to all calls of drm_gem_objects_lookup().
---
drivers/gpu/drm/drm_gem.c | 13 +++++++------
drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 4a89b6acb6af..dc3d6cfa692b 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -102,7 +102,6 @@ drm_gem_init(struct drm_device *dev)
vma_offset_manager = drmm_kzalloc(dev, sizeof(*vma_offset_manager),
GFP_KERNEL);
if (!vma_offset_manager) {
- DRM_ERROR("out of memory\n");
return -ENOMEM;
}
@@ -783,9 +782,10 @@ static int objects_lookup(struct drm_file *filp, u32 *handle, int count,
int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
int count, struct drm_gem_object ***objs_out)
{
- int ret;
- u32 *handles;
+ struct drm_device *dev = filp->minor->dev;
struct drm_gem_object **objs;
+ u32 *handles;
+ int ret;
if (!count)
return 0;
@@ -805,7 +805,7 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
if (copy_from_user(handles, bo_handles, count * sizeof(u32))) {
ret = -EFAULT;
- DRM_DEBUG("Failed to copy in GEM handles\n");
+ drm_dbg_core(dev, "Failed to copy in GEM handles\n");
goto out;
}
@@ -853,12 +853,13 @@ EXPORT_SYMBOL(drm_gem_object_lookup);
long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle,
bool wait_all, unsigned long timeout)
{
- long ret;
+ struct drm_device *dev = filep->minor->dev;
struct drm_gem_object *obj;
+ long ret;
obj = drm_gem_object_lookup(filep, handle);
if (!obj) {
- DRM_DEBUG("Failed to look up GEM BO %d\n", handle);
+ drm_dbg_core(dev, "Failed to look up GEM BO %d\n", handle);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
index 4f0320df858f..a507cf517015 100644
--- a/drivers/gpu/drm/drm_gem_dma_helper.c
+++ b/drivers/gpu/drm/drm_gem_dma_helper.c
@@ -582,7 +582,7 @@ drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
ret = dma_buf_vmap_unlocked(attach->dmabuf, &map);
if (ret) {
- DRM_ERROR("Failed to vmap PRIME buffer\n");
+ drm_err(dev, "Failed to vmap PRIME buffer\n");
return ERR_PTR(ret);
}
--
2.51.0
On 9/2/2025 5:00 PM, Athul Raj Kollareth wrote:
> Replace the DRM_* logging macros used in gem helper files with the
> appropriate ones specified in /include/drm/drm_print.h.
>
> Signed-off-by: Athul Raj Kollareth <krathul3152@gmail.com>
> ---
> Changes in v4:
> - Some codestyle corrections.
> - Remove OOM error logging in drm_gem_init().
>
> Changes in v3:
> - Revert all changes to drm_gem_objects_lookup().
> - Use drm_device from minor.
>
> Changes in v2:
> - Change drm_gem_objects_lookup() to take a drm_device* argument.
> - Make appropriate changes to all calls of drm_gem_objects_lookup().
> ---
> drivers/gpu/drm/drm_gem.c | 13 +++++++------
> drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
> 2 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> index 4a89b6acb6af..dc3d6cfa692b 100644
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -102,7 +102,6 @@ drm_gem_init(struct drm_device *dev)
> vma_offset_manager = drmm_kzalloc(dev, sizeof(*vma_offset_manager),
> GFP_KERNEL);
> if (!vma_offset_manager) {
> - DRM_ERROR("out of memory\n");
> return -ENOMEM;
> }
nit: you can now remove { }, didn't checkpatch.pl complain?
>
> @@ -783,9 +782,10 @@ static int objects_lookup(struct drm_file *filp, u32 *handle, int count,
> int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
> int count, struct drm_gem_object ***objs_out)
> {
> - int ret;
> - u32 *handles;
> + struct drm_device *dev = filp->minor->dev;
> struct drm_gem_object **objs;
> + u32 *handles;
> + int ret;
>
> if (!count)
> return 0;
> @@ -805,7 +805,7 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
>
> if (copy_from_user(handles, bo_handles, count * sizeof(u32))) {
> ret = -EFAULT;
> - DRM_DEBUG("Failed to copy in GEM handles\n");
> + drm_dbg_core(dev, "Failed to copy in GEM handles\n");
> goto out;
> }
>
> @@ -853,12 +853,13 @@ EXPORT_SYMBOL(drm_gem_object_lookup);
> long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle,
> bool wait_all, unsigned long timeout)
> {
> - long ret;
> + struct drm_device *dev = filep->minor->dev;
> struct drm_gem_object *obj;
> + long ret;
>
> obj = drm_gem_object_lookup(filep, handle);
> if (!obj) {
> - DRM_DEBUG("Failed to look up GEM BO %d\n", handle);
> + drm_dbg_core(dev, "Failed to look up GEM BO %d\n", handle);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
> index 4f0320df858f..a507cf517015 100644
> --- a/drivers/gpu/drm/drm_gem_dma_helper.c
> +++ b/drivers/gpu/drm/drm_gem_dma_helper.c
> @@ -582,7 +582,7 @@ drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
>
> ret = dma_buf_vmap_unlocked(attach->dmabuf, &map);
> if (ret) {
> - DRM_ERROR("Failed to vmap PRIME buffer\n");
> + drm_err(dev, "Failed to vmap PRIME buffer\n");
> return ERR_PTR(ret);
> }
>
otherwise LGTM, so with nit fixed:
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
but you still need someone else to merge it
On Tue, Sep 02, 2025 at 05:35:48PM +0200, Michal Wajdeczko wrote:
>
>
> On 9/2/2025 5:00 PM, Athul Raj Kollareth wrote:
> > Replace the DRM_* logging macros used in gem helper files with the
> > appropriate ones specified in /include/drm/drm_print.h.
> >
> > Signed-off-by: Athul Raj Kollareth <krathul3152@gmail.com>
> > ---
> > Changes in v4:
> > - Some codestyle corrections.
> > - Remove OOM error logging in drm_gem_init().
> >
> > Changes in v3:
> > - Revert all changes to drm_gem_objects_lookup().
> > - Use drm_device from minor.
> >
> > Changes in v2:
> > - Change drm_gem_objects_lookup() to take a drm_device* argument.
> > - Make appropriate changes to all calls of drm_gem_objects_lookup().
> > ---
> > drivers/gpu/drm/drm_gem.c | 13 +++++++------
> > drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
> > 2 files changed, 8 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> > index 4a89b6acb6af..dc3d6cfa692b 100644
> > --- a/drivers/gpu/drm/drm_gem.c
> > +++ b/drivers/gpu/drm/drm_gem.c
> > @@ -102,7 +102,6 @@ drm_gem_init(struct drm_device *dev)
> > vma_offset_manager = drmm_kzalloc(dev, sizeof(*vma_offset_manager),
> > GFP_KERNEL);
> > if (!vma_offset_manager) {
> > - DRM_ERROR("out of memory\n");
> > return -ENOMEM;
> > }
>
> nit: you can now remove { }, didn't checkpatch.pl complain?
No, it did not.
> >
> > @@ -783,9 +782,10 @@ static int objects_lookup(struct drm_file *filp, u32 *handle, int count,
> > int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
> > int count, struct drm_gem_object ***objs_out)
> > {
> > - int ret;
> > - u32 *handles;
> > + struct drm_device *dev = filp->minor->dev;
> > struct drm_gem_object **objs;
> > + u32 *handles;
> > + int ret;
> >
> > if (!count)
> > return 0;
> > @@ -805,7 +805,7 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
> >
> > if (copy_from_user(handles, bo_handles, count * sizeof(u32))) {
> > ret = -EFAULT;
> > - DRM_DEBUG("Failed to copy in GEM handles\n");
> > + drm_dbg_core(dev, "Failed to copy in GEM handles\n");
> > goto out;
> > }
> >
> > @@ -853,12 +853,13 @@ EXPORT_SYMBOL(drm_gem_object_lookup);
> > long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle,
> > bool wait_all, unsigned long timeout)
> > {
> > - long ret;
> > + struct drm_device *dev = filep->minor->dev;
> > struct drm_gem_object *obj;
> > + long ret;
> >
> > obj = drm_gem_object_lookup(filep, handle);
> > if (!obj) {
> > - DRM_DEBUG("Failed to look up GEM BO %d\n", handle);
> > + drm_dbg_core(dev, "Failed to look up GEM BO %d\n", handle);
> > return -EINVAL;
> > }
> >
> > diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
> > index 4f0320df858f..a507cf517015 100644
> > --- a/drivers/gpu/drm/drm_gem_dma_helper.c
> > +++ b/drivers/gpu/drm/drm_gem_dma_helper.c
> > @@ -582,7 +582,7 @@ drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
> >
> > ret = dma_buf_vmap_unlocked(attach->dmabuf, &map);
> > if (ret) {
> > - DRM_ERROR("Failed to vmap PRIME buffer\n");
> > + drm_err(dev, "Failed to vmap PRIME buffer\n");
> > return ERR_PTR(ret);
> > }
> >
>
> otherwise LGTM, so with nit fixed:
>
> Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>
> but you still need someone else to merge it
>
Thank you, I will fix it and hopefully get someone to merge it.
Best regards,
Athul
Replace the DRM_* logging macros used in gem helper files with the
appropriate ones specified in /include/drm/drm_print.h.
Signed-off-by: Athul Raj Kollareth <krathul3152@gmail.com>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
Changes in v5:
- Minor style fix.
Changes in v4:
- Some codestyle corrections.
- Remove OOM error logging in drm_gem_init().
Changes in v3:
- Revert all changes to drm_gem_objects_lookup().
- Use drm_device from minor.
Changes in v2:
- Change drm_gem_objects_lookup() to take a drm_device* argument.
- Make appropriate changes to all calls of drm_gem_objects_lookup().
---
drivers/gpu/drm/drm_gem.c | 16 ++++++++--------
drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 4a89b6acb6af..fb12cc2051d8 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -101,10 +101,8 @@ drm_gem_init(struct drm_device *dev)
vma_offset_manager = drmm_kzalloc(dev, sizeof(*vma_offset_manager),
GFP_KERNEL);
- if (!vma_offset_manager) {
- DRM_ERROR("out of memory\n");
+ if (!vma_offset_manager)
return -ENOMEM;
- }
dev->vma_offset_manager = vma_offset_manager;
drm_vma_offset_manager_init(vma_offset_manager,
@@ -783,9 +781,10 @@ static int objects_lookup(struct drm_file *filp, u32 *handle, int count,
int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
int count, struct drm_gem_object ***objs_out)
{
- int ret;
- u32 *handles;
+ struct drm_device *dev = filp->minor->dev;
struct drm_gem_object **objs;
+ u32 *handles;
+ int ret;
if (!count)
return 0;
@@ -805,7 +804,7 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
if (copy_from_user(handles, bo_handles, count * sizeof(u32))) {
ret = -EFAULT;
- DRM_DEBUG("Failed to copy in GEM handles\n");
+ drm_dbg_core(dev, "Failed to copy in GEM handles\n");
goto out;
}
@@ -853,12 +852,13 @@ EXPORT_SYMBOL(drm_gem_object_lookup);
long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle,
bool wait_all, unsigned long timeout)
{
- long ret;
+ struct drm_device *dev = filep->minor->dev;
struct drm_gem_object *obj;
+ long ret;
obj = drm_gem_object_lookup(filep, handle);
if (!obj) {
- DRM_DEBUG("Failed to look up GEM BO %d\n", handle);
+ drm_dbg_core(dev, "Failed to look up GEM BO %d\n", handle);
return -EINVAL;
}
diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
index 4f0320df858f..a507cf517015 100644
--- a/drivers/gpu/drm/drm_gem_dma_helper.c
+++ b/drivers/gpu/drm/drm_gem_dma_helper.c
@@ -582,7 +582,7 @@ drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
ret = dma_buf_vmap_unlocked(attach->dmabuf, &map);
if (ret) {
- DRM_ERROR("Failed to vmap PRIME buffer\n");
+ drm_err(dev, "Failed to vmap PRIME buffer\n");
return ERR_PTR(ret);
}
--
2.51.0
Hi
Am 02.09.25 um 20:10 schrieb Athul Raj Kollareth:
> Replace the DRM_* logging macros used in gem helper files with the
> appropriate ones specified in /include/drm/drm_print.h.
Added to drm-misc-next. Thanks for the patch.
Best regards
Thomas
>
> Signed-off-by: Athul Raj Kollareth <krathul3152@gmail.com>
> Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
> Changes in v5:
> - Minor style fix.
>
> Changes in v4:
> - Some codestyle corrections.
> - Remove OOM error logging in drm_gem_init().
>
> Changes in v3:
> - Revert all changes to drm_gem_objects_lookup().
> - Use drm_device from minor.
>
> Changes in v2:
> - Change drm_gem_objects_lookup() to take a drm_device* argument.
> - Make appropriate changes to all calls of drm_gem_objects_lookup().
> ---
> drivers/gpu/drm/drm_gem.c | 16 ++++++++--------
> drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
> 2 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> index 4a89b6acb6af..fb12cc2051d8 100644
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -101,10 +101,8 @@ drm_gem_init(struct drm_device *dev)
>
> vma_offset_manager = drmm_kzalloc(dev, sizeof(*vma_offset_manager),
> GFP_KERNEL);
> - if (!vma_offset_manager) {
> - DRM_ERROR("out of memory\n");
> + if (!vma_offset_manager)
> return -ENOMEM;
> - }
>
> dev->vma_offset_manager = vma_offset_manager;
> drm_vma_offset_manager_init(vma_offset_manager,
> @@ -783,9 +781,10 @@ static int objects_lookup(struct drm_file *filp, u32 *handle, int count,
> int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
> int count, struct drm_gem_object ***objs_out)
> {
> - int ret;
> - u32 *handles;
> + struct drm_device *dev = filp->minor->dev;
> struct drm_gem_object **objs;
> + u32 *handles;
> + int ret;
>
> if (!count)
> return 0;
> @@ -805,7 +804,7 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
>
> if (copy_from_user(handles, bo_handles, count * sizeof(u32))) {
> ret = -EFAULT;
> - DRM_DEBUG("Failed to copy in GEM handles\n");
> + drm_dbg_core(dev, "Failed to copy in GEM handles\n");
> goto out;
> }
>
> @@ -853,12 +852,13 @@ EXPORT_SYMBOL(drm_gem_object_lookup);
> long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle,
> bool wait_all, unsigned long timeout)
> {
> - long ret;
> + struct drm_device *dev = filep->minor->dev;
> struct drm_gem_object *obj;
> + long ret;
>
> obj = drm_gem_object_lookup(filep, handle);
> if (!obj) {
> - DRM_DEBUG("Failed to look up GEM BO %d\n", handle);
> + drm_dbg_core(dev, "Failed to look up GEM BO %d\n", handle);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
> index 4f0320df858f..a507cf517015 100644
> --- a/drivers/gpu/drm/drm_gem_dma_helper.c
> +++ b/drivers/gpu/drm/drm_gem_dma_helper.c
> @@ -582,7 +582,7 @@ drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
>
> ret = dma_buf_vmap_unlocked(attach->dmabuf, &map);
> if (ret) {
> - DRM_ERROR("Failed to vmap PRIME buffer\n");
> + drm_err(dev, "Failed to vmap PRIME buffer\n");
> return ERR_PTR(ret);
> }
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
Am 02.09.25 um 20:10 schrieb Athul Raj Kollareth:
> Replace the DRM_* logging macros used in gem helper files with the
> appropriate ones specified in /include/drm/drm_print.h.
>
> Signed-off-by: Athul Raj Kollareth <krathul3152@gmail.com>
> Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
> Changes in v5:
> - Minor style fix.
>
> Changes in v4:
> - Some codestyle corrections.
> - Remove OOM error logging in drm_gem_init().
>
> Changes in v3:
> - Revert all changes to drm_gem_objects_lookup().
> - Use drm_device from minor.
>
> Changes in v2:
> - Change drm_gem_objects_lookup() to take a drm_device* argument.
> - Make appropriate changes to all calls of drm_gem_objects_lookup().
> ---
> drivers/gpu/drm/drm_gem.c | 16 ++++++++--------
> drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
> 2 files changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> index 4a89b6acb6af..fb12cc2051d8 100644
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -101,10 +101,8 @@ drm_gem_init(struct drm_device *dev)
>
> vma_offset_manager = drmm_kzalloc(dev, sizeof(*vma_offset_manager),
> GFP_KERNEL);
> - if (!vma_offset_manager) {
> - DRM_ERROR("out of memory\n");
> + if (!vma_offset_manager)
> return -ENOMEM;
> - }
>
> dev->vma_offset_manager = vma_offset_manager;
> drm_vma_offset_manager_init(vma_offset_manager,
> @@ -783,9 +781,10 @@ static int objects_lookup(struct drm_file *filp, u32 *handle, int count,
> int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
> int count, struct drm_gem_object ***objs_out)
> {
> - int ret;
> - u32 *handles;
> + struct drm_device *dev = filp->minor->dev;
> struct drm_gem_object **objs;
> + u32 *handles;
> + int ret;
>
> if (!count)
> return 0;
> @@ -805,7 +804,7 @@ int drm_gem_objects_lookup(struct drm_file *filp, void __user *bo_handles,
>
> if (copy_from_user(handles, bo_handles, count * sizeof(u32))) {
> ret = -EFAULT;
> - DRM_DEBUG("Failed to copy in GEM handles\n");
> + drm_dbg_core(dev, "Failed to copy in GEM handles\n");
> goto out;
> }
>
> @@ -853,12 +852,13 @@ EXPORT_SYMBOL(drm_gem_object_lookup);
> long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle,
> bool wait_all, unsigned long timeout)
> {
> - long ret;
> + struct drm_device *dev = filep->minor->dev;
> struct drm_gem_object *obj;
> + long ret;
>
> obj = drm_gem_object_lookup(filep, handle);
> if (!obj) {
> - DRM_DEBUG("Failed to look up GEM BO %d\n", handle);
> + drm_dbg_core(dev, "Failed to look up GEM BO %d\n", handle);
> return -EINVAL;
> }
>
> diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
> index 4f0320df858f..a507cf517015 100644
> --- a/drivers/gpu/drm/drm_gem_dma_helper.c
> +++ b/drivers/gpu/drm/drm_gem_dma_helper.c
> @@ -582,7 +582,7 @@ drm_gem_dma_prime_import_sg_table_vmap(struct drm_device *dev,
>
> ret = dma_buf_vmap_unlocked(attach->dmabuf, &map);
> if (ret) {
> - DRM_ERROR("Failed to vmap PRIME buffer\n");
> + drm_err(dev, "Failed to vmap PRIME buffer\n");
> return ERR_PTR(ret);
> }
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
© 2016 - 2026 Red Hat, Inc.